【发布时间】:2015-01-15 02:38:27
【问题描述】:
这是我的测试脚本:
def main(): #global
n = 1
z = None
def addone(): #local
if not z:
n = n+1
addone()
print n
main()
一旦addone() 函数到达调用行,我就会进入它。
此时我只能看到变量z,而看不到n。
现在,如果 n 在赋值之前被引用,z 不应该也是如此吗?
同样,如果我将n=n+1 更改为z='hi',我将无法再看到z!
这与我之前对本地/全局函数的所有信念背道而驰!你知道的越多,你对 Python 的了解就越多。
问题:
为什么我可以看到一个而看不到另一个?
我想将
global添加到我想重新分配的这些变量之前吗?
【问题讨论】:
-
也许这可能会有所帮助:stackoverflow.com/a/21978980/748858
-
啊哈,确实有用。谢谢。我原以为我必须在函数之外使用
global,但很高兴我可以在函数内部使用它。 -
等等……也许和我想的一样。
global不是必须在函数外部定义吗?我收到了NameError: global name 'x' is not defined。在函数之外调用它global也会使其工作。
标签: python python-2.7 variables scope