闭包

闭包作用

其外部作用域已经释放的情况下,内部方法或相应属性贮存在内存中,从而用于函数封装,或减少函数参数问题

闭包例子

与nonlocal的协同使用

a = 0
print('1',(id(a)))
def func1():
    a = 1
    print('2', id(a))
    def func2():

        nonlocal a # 当后续无需修改a变量时,闭包函数会直接处理相关的变量引用,但若需要修改变量时,需要显示申明变量为nonlocal。因为闭包处理时仅保留变量的引用,不可修改。
        print(id(a))
        # global a
        a = 2
        print('closure a: ',a)
    print(f'func1_a: {a}')
    func2()
    print(f'after func2, func1_a: {a}')

func1()

1 2571046971664
2 2571046971696
func1_a: 1
2571046971696
closure a:  1
after func2, func1_a: 1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容