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)  # []
      
      
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    D3DPT_TRIANGLESTRIP 与 D3DPT_TRIANGLEFAN 的区别
    [转]DrawPrimitive 详解Direct3DDevice8
    sublime useful packages
    spring+freemarker 乱码解决办法
    vim 更改注释颜色
    git rollback
    从源码导入到github
    Laravel 安装
    Install Apache 2.2.15, MySQL 5.5.34 & PHP 5.5.4 on RHEL/CentOS 6.4/5.9 & Fedora 19-12 [转]
    Linux / Unix Command: rz
  • 原文地址:https://www.cnblogs.com/daviddd/p/12033608.html
Copyright © 2011-2022 走看看