Python中如何在另一脚本访问__name__=='__main__'内的变量?
解决Python导入变量时的ImportError问题
你遇到的错误有两个根源:
- 变量定义范围问题:
sample.py里的变量c是定义在if __name__ == '__main__':代码块内的。当sample.py被作为模块导入时,这个代码块不会执行,因此c根本不会被创建,自然无法被导入。 - 导入语法错误:
test.py里的导入语句写错了,导入Python模块时不需要加上.py后缀,from sample.py import c是错误的写法。
修正后的代码
sample.py
调整变量定义的位置,把a、b、c放到if __name__ == '__main__':块外,这样导入时能正常定义这些变量:
#sample.py a = 10 b = 5 c = a + b if __name__ == '__main__': print(c)
test.py
修正导入语法:
#test.py from sample import c d = c print(d)
补充说明
如果不想把变量都暴露在模块顶层,也可以把计算逻辑封装成函数,在test.py里调用函数获取结果:
另一种写法的sample.py
#sample.py def calculate_c(): a = 10 b = 5 return a + b if __name__ == '__main__': c = calculate_c() print(c)
对应的test.py
#test.py from sample import calculate_c d = calculate_c() print(d)
内容的提问来源于stack exchange,提问作者KrishnaSaran draksharapu
相关产品推荐
相关产品推荐

