• 函数之闭包


    闭包

    • 闭包是嵌套在函数中的函数

    • 闭包必须是内层函数对外层函数的变量(非全局变量)的引用

    • 函数名.code.co_freevars 查看函数的自由变量

    • 函数名.code.co_varnames 查看函数的局部变量

    • 闭包的作用:保存局部信息不被销毁,保证数据的安全性

    • 应用:可以保存一些非全局变量但是不易被销毁,改变的数据,还有装饰器

    • 判断闭包的方法:closure

    • def make_averager():
      
          series = []
          def averager(new_value):
              series.append(new_value)
              total = sum(series)
              return total/len(series)
      
          return averager
      avg = make_averager()
      # 函数名.__code__.co_freevars  查看函数的自由变量
      print(avg.__code__.co_freevars)  # ('series',)
      当然还有一些参数,仅供了解:
      
      # 函数名.__code__.co_freevars 查看函数的自由变量
      print(avg.__code__.co_freevars)  # ('series',)
      # 函数名.__code__.co_varnames 查看函数的局部变量
      print(avg.__code__.co_varnames)  # ('new_value', 'total')
      # 函数名.__closure__ 获取具体的自由变量对象,也就是cell对象。
      # (<cell at 0x0000020070CB7618: int object at 0x000000005CA08090>,)
      # cell_contents 自由变量具体的值
      print(avg.__closure__[0].cell_contents)  # []
      
      
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    发光二极管
    续流二极管作用及工作原理
    python backtrace注意事项
    docker tips
    direct stdin and stdout
    python skill
    mysql comments
    python dict
    python list and tuple
    Python library
  • 原文地址:https://www.cnblogs.com/daviddd/p/12033608.html
Copyright © 2020-2023  润新知