python-装饰器-闭包

一、闭包定义

【1】闭包:内部函数内,引用外部作用域(但是不是全局作用域)的变量,那么这个内部函数就被认为是闭包

# 闭包:内部函数内,引用外部作用域(但是不是全局作用域)的变量,那么这个内部函数就被认为是闭包
def foo1():
    a = '局部变量'
    # 内部函数
    def foo2():
        print(a) # 引用了外部变量,但不是全局变量
    return foo2

foo1()() # 打印a的值:foo1()---执行foo1函数,得到foo2的函数名,foo1()()---执行foo2()函数

【2】为什么要用闭包:(https://www.bilibili.com/video/BV1JW411i7HR?spm_id_from=333.337.search-card.all.click)

  1、函数内的属性,都是有生命周期的,只存在于函数执行期间。如果函数执行完毕,则属性都会消失,所以需要闭包函数来将外部作用域的属性(对象)返回,可以在其他其他作用域使用

  2、闭包内的闭包函数私有化了变量,完成了数据的封装

  3、调用外部作用域的变量,变量可以是外部函数传入的函数名,所以闭包也是装饰器的基础

posted on 2022-05-08 19:39  墙角一枝花  阅读(24)  评论(0编辑  收藏  举报