Python 使用相当典型的变量作用域。非局部变量在函数中是可见的。
global
如果要分配给全局范围内的变量,则只需要关键字。您还必须注意全局范围和外部范围之间的区别。考虑影响:
x = 'global'
def f():
x = 'local in f'
def g():
global x
x = 'assigned in g'
g()
print x
执行f()
上述代码后将打印local in f
,而x
在全局范围内设置为'assigned in g'
.
从 Python 3 开始,还有一个nonlocal
关键字,它允许您从外部范围分配给变量。
x = 'global'
def f():
x = 'local in f'
def g():
nonlocal x
x = 'assigned in g'
return g
print(x)
执行f()
上述代码后,将在全局范围内打印 'assigned in g (which is the value of
x in local scope of
f() x'), while value of
保持不变。
还值得注意的是,Python 使用词法(静态)范围,因此以下代码不会修改全局x
范围内的 :
x = 'global'
def f():
x = 'local in f'
def g():
nonlocal x
x = 'assigned in g'
return g
g = f()
g()