通常来讲,闭包的内部变量对于外界来讲是完全隐藏的。 但是,你可以通过编写访问函数并将其作为函数属性绑定到闭包上来实现这个目的。例如:

    1. def sample():
    2. n = 0
    3. def func():
    4. print('n=', n)
    5. def get_n():
    6. return n
    7. def set_n(value):
    8. nonlocal n
    9. n = value
    10. func.get_n = get_n
    11. func.set_n = set_n
    12. return func
    13. if __name__ == '__main__':
    14. f = sample()
    15. f()
    16. f.set_n(100)
    17. f()
    18. print(f.get_n())

    输出:

    1. n= 0
    2. n= 100
    3. 100