考虑一下这个例子:
def A():
b = 1
def B():
# I can access 'b' from here.
print(b)
# But can i modify 'b' here?
B()
A()
对于 B
函数中的代码,变量 b
位于非全局、封闭(外部)作用域中。如何从 B
内修改 b
?如果我直接尝试它,我会得到一个错误,并且使用 global
不能解决这个问题,因为 b
不是全局的。
Python 实现了 词汇上的,不是动态的作用域——就像几乎所有现代语言一样。这里的技术将 没有允许访问调用方的变量(除非调用方碰巧也是一个封闭函数) ,因为调用方不在作用域内。有关此问题的更多信息,请参见 如何从调用者访问变量,即使它不是一个封闭范围(即,实现动态范围) ?。