2015-05-12 31 views

回答

3

当定义返回一个内部函数的外功能:

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

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

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

x该值被存储在元组__closure__

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

谢谢,所以这是func的责任,维护环境而不是运行时。所以如果outer()不分配给任何对象,那么就没有必要维护环境。 – user4344026