如何在Python中从另一脚本的函数内导入变量?
问题原因
你遇到的AttributeError是因为:x是foo函数内部的局部变量,它仅在函数执行时存在于函数的内部作用域中,外部无法直接访问;同时你试图把foo这个函数对象当作带有属性的对象来访问foo.x,但函数本身并没有预先定义x这个属性,所以会报错。
解决方案
以下是几种可行的解决方式,你可以根据实际需求选择:
方案1:让函数返回变量,调用函数获取值
修改file2.py让函数返回x,在file1.py中调用函数拿到结果:
# file2.py def foo(): x = 7 return x # file1.py from file2 import foo def myfunc(): x_value = foo() # 调用函数获取返回的x值 print(x_value) myfunc()
方案2:将变量绑定为函数的属性
如果需要把x作为函数对象的属性,要先执行函数,在函数内部给自身绑定属性:
# file2.py def foo(): foo.x = 7 # 给函数对象foo绑定x属性 # file1.py from file2 import foo def myfunc(): foo() # 必须先执行函数,才能完成属性绑定 print(foo.x) myfunc()
方案3:改用模块级全局变量
如果x不需要依赖函数执行逻辑生成,直接把它定义为模块级的全局变量,导入后即可直接访问:
# file2.py x = 7 # 定义在模块级别,整个模块都能访问 def foo(): # 原函数逻辑 pass # file1.py from file2 import x def myfunc(): print(x) myfunc()
内容的提问来源于stack exchange,提问作者Sri2110
相关产品推荐
相关产品推荐

