DefTest.py
def fun1():
print x
test.py
import DefTest
x = 1
DefTest.fun()
为什么在执行test.py时会得到"NameError:全局名称'x'未定义"?我如何正确设置这个,这样我就可以获得这个功能
每个模块都有自己的全局作用域。fun
使用DefTest.x
,而不是test.x
。
>>> import DefTest
>>> DefTest.x = 5
>>> DefTest.fun()
5
你可能认为以下方法也适用于
from DefTest import x
x = 5
DefTest.fun()
但事实并非如此,因为from DefTest import x
在模块test
中创建了一个新的全局变量,该变量使用DefTest.x
的值初始化,而不是创建DefTest.x
的"别名"。
在test.py中,使用完全限定名称:deftest.x = 1
您应该在test.py文件中传递变量名称x和Package DefTest
DefTest.x = 1
DefTest.func1()