调用函数实现闭包后,Python是否维护函数环境?

时间:2015-05-12 10:15:38

标签: python closures

我正在研究cs61a中的材料,但是“2.4.4本地状态”中的“撤销”示例让我觉得即使在调用完成后Python仍然保持功能环境以便实现但它看起来太昂贵了。那么python实现闭包的机制是什么。

1 个答案:

答案 0 :(得分:3)

定义返回内部函数的外部函数时:

def outer():
    x = 40
    def inner():
        return x + 2
    return inner

您可以访问外部函数的范围:

>>> func = outer()
>>> func()
42

x的值存储在元组__closure__

>>> func.__closure__[0].cell_contents
40