Python-未传递给函数的全局变量



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()

相关内容

  • 没有找到相关文章

最新更新