zoukankan      html  css  js  c++  java
  • 函数之闭包

    闭包

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

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

    • 函数名.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)  # []
      
      
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    将一个float型转化为内存存储格式的步骤
    判断是否是中文、英文字符串
    打开文件对话框
    线性表之四,受限的线性表,队列
    线性表之三,受限的线性表,栈
    数据结构
    List
    SamplesHashtable
    Exception
    maven指定本地仓库
  • 原文地址:https://www.cnblogs.com/daviddd/p/12033608.html
Copyright © 2011-2022 走看看