1.1 闭包

1、函数作为第一类对象,支持赋值给变量,作为参数传递给其它函数,作为其它函数的返回值,支持函数的嵌套,实现了__call__方法的类实例对象也可以当做函数被调用

2、s= func  -->执行函数的内存地址

s =func() -->函数的调用

3、闭包:嵌套函数,内部函数调用外部函数的变量

可以让一个局部变量常驻内存

def  outer():

  a=1

  def inner():       #闭包函数

    pritn(a)

  print(inner.__closuer__)  #如果结果是cell 就是个闭包函数

4、常见闭包形式   在函数的外部使用内部的函数,既把内部的函数变为一个变量

def  outer():

  a=1 #常驻内存,防止其他程序改变这个变量

  def inner():       #闭包函数

    pritn(a)

    return inner

inn = outer()         #函数内存指向一个全局变量

inn()

1.2 装饰器

1、装饰器作用,不想修改函数的调用方式,但是还想再原来函数前后增加功能

2、开放封闭原则

3、装饰器的本质:闭包函数

 def wrapper(func):
def inner(*args,**kwargs):
#在被装饰的函数执行之前做的事
ret = func(*args,**kwargs)
#在被装饰的函数执行之后做的事
return ret
return inner

wrapper

4、functools

from functools import wraps

def wrapper(func):

  @wraps(func)                         #不改变被装饰的函数的函数名

  def inner(*args,**kwargs):

    #在被装饰的函数执行之前做的事

    ret = func(*args,**kwargs)

    #在被装饰的函数执行之后做的事

    return ret

  return inner

5、带参数的装饰器 三层装饰器

最新文章

  1. php使用microtime(true)查看代码执行时间
  2. HTML+CSS布局技巧及兼容问题【阅读季】
  3. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问
  4. C#------对SQLServer进行简单的增,删,改,查
  5. 安装生物信息学软件-Biopython
  6. java中的生产者和消费者的问题
  7. Android开发(20)--RadioGroup的使用
  8. tar (child): jdk-7u71-linux-x64.tar.gz:无法 open: 没有那个文件或目录
  9. oracle密码过期
  10. Django admin组件使用
  11. Nuxt.js部署应用的方式
  12. 【UML】NO.50.EBook.5.UML.1.010-【UML 大战需求分析】- 考勤系统
  13. 关于 java 里面的路径
  14. msysGit在GitHub代码托管
  15. 滴滴工程师带你深入理解 TCP 握手分手全过程
  16. 更改AVD默认路径
  17. servlet乱码 解决方法 2种方法
  18. [hadoop读书笔记] 第三章 HDFS
  19. 文件系统性能测试--iozone
  20. JMX 远程监控 Linux tomcat 功能实现

热门文章

  1. LCD编程_显示文字
  2. Logstash连接Elasticsearch异常
  3. 解决opencart设置SSL后评论不能翻页的问题
  4. 13-cmake语法-路径设置
  5. Gym - 102056C(2018EC final) -Heretical … Möbius ——CRT
  6. 研究下vc++的abort函数
  7. [RN]react-native-scrollable-tab-view和FlatList手势冲突解决
  8. Luogu P3228 HNOI2013 数列 组合数学
  9. Educational Round 64 题解
  10. shell(一) shell变量