【发布时间】:2011-07-19 09:43:51
【问题描述】:
例如: assginment 语句将声明一个新的局部变量。
foo = 'global'
def func1():
foo = 'func1'
def func2():
foo = 'local variable in func2'
使用全局声明将使用全局中的 foo:
def func2():
global foo
foo = 'global changed in func2' #changed the foo value in global scope
如何更改 func1 范围内的变量 foo?
感谢您的帮助。
编辑:
谢谢 Brandon Craig Rhodes,我终于明白你的意思了。
如果嵌套的范围超过 3 个,我可以将变量存储在一个列表中。
foo = ['global', 'function1', 'function2']
def func1():
foo[1] = 'func1'
def func2():
foo[2] = 'func2'
foo[1] = 'func1 modified in func2'
我实际上只是使用了一个全局变量。
所以,如果有两个函数嵌套,我们可以使用
nonlocal foo
和
global foo
如果嵌套的函数超过三个,
并且每个函数都使用其他函数范围内的变量,
为什么我们不声明一个全局列表变量?
感谢您的帮助!!!
【问题讨论】:
标签: python scope global python-nonlocal