这是代码:

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/

10-17 01:20