一般来说,在闭包内层定义的变量对于外界来说完全是隔离的。但是,可以通过编写存取函数(accessor function,即getter/setter方法)并将它们作为函数属性附加到闭包上来提供对内层变量的访问支持
def sample():
n = 0
# Closure function
def func():
print('n=', n)
# Accessor methods for n
def get_n():
return n
def set_n(value):
nonlocal n
n = value
# Attach as function attributes
func.get_n = get_n
func.set_n = set_n
return func
f = sample()
f()
f.set_n(10)
f()
f.get_n()
f()