这是代码:
def caller(callee):
callee()
def wrapper():
def a():
print v0
for i in range(5):
v0 = i*i
caller(a)
wrapper()
上面的代码输出:
0
1
4
9
16
但我不明白
a
如何解析变量 v0
。我找不到有关此语言功能的相关 Python 文档。 最佳答案
函数中定义的变量范围包括其中的所有嵌套函数。因此 wrapper()
中定义的变量可以在 a()
中访问,因为该函数嵌套在其中。这被称为词法作用域,它通常用于创建闭包。
这在 Python Resolution of Names 文档中有解释:
关于python - 这个函数如何找到另一个变量的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35642477/