这里是我的测试脚本:访问全局函数的变量在局部函数
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。
问题(S):
为什么我能看到一个而不是其他?
我想预先将
global
添加到我想重新分配的这些变量中吗?
也许这可能会有所帮助:http://stackoverflow.com/a/21978980/748858 – mgilson
啊哈,确实有用。谢谢。我原以为我不得不在功能之外使用'global',但是我可以在内部使用它。 – tenwest
等待...也许这是我想的。不需要在功能的外部**定义'global'?我得到一个'NameError:全局名'x'未定义'。在函数之外调用它'global'并且使其工作。 – tenwest