13闭包

  1. 闭包作用

    • 封闭的数据,只允许指定内容使用

    • 保证了数据的安全性

  2. 闭包的定义

    • 内层函数,对外层函数非全局变量的引 用(使用),就会形成闭包

    • 闭包只能存在于嵌套函数中,且内部函数引用了外部函数的变量

    • 被引用的非全局变量也叫作“自由变量”,这个自由变量会与内部函数产生一个绑定关系。

    • 自由变量不会随着函数结束而消失,会一直存在于内存中

    • 内部函数使用外部函数的变量,外部变量把内部变量通过return返回给调用者,这个过程叫做闭包,被返回的函数叫做闭包函数

  3. 闭包的作用

    • 保证了数据安全
  4. 例子

    def make_averager():
        li=[]
        def averager(new_value):
            li.append(new_value)
            total=sum(li)
            return total/len(li)
        return averager
    avg=make_averager()
    print(avg(10000))
    print(avg(11000))
    print(avg(12000))
    print(avg(9000))
    #结果如下:
    10000.0
    10500.0
    11000.0
    10500.0
    
    • 每次调用,li的值不会被清空
  5. 如何判断

    • 使用代码判断是否是闭包

      def make_averager():
          li=[]
          def averager(new_value):
              li.append(new_value)
              total=sum(li)
              return total/len(li)
          return averager
      avg=make_averager()
      print(avg.__code__.co_freevars)
      # 结果如下,如果有自由变量,就会把它返回,又返回就是闭包:
      ('li',)
      
posted @ 2023-07-12 09:48  majic_jie  阅读(17)  评论(0)    收藏  举报