闭包的定义

  1. 闭包是嵌套在函数中的函数。
  2. 闭包必须是内层函数对外层函数的变量(非全局变量)的引用。

闭包格式:

def func():
lst=[]
def inner(a):
lst.append(a)
return lst
return inner ret=func()
print(ret(100)) #[100]
print(ret(200)) #[100, 200]

判断是不是闭包的方法:

# 判断一个函数是不是闭包 == 闭包函数有没有自由变量
print(函数名.__code__.co_freevars)

闭包的应用:

1,保证数据的安全。

2,装饰器的本质。

3.1装饰器基本格式

装饰器:在不改变原函数内部代码的基础上,在函数之前和之后执行某个功能

def func(arg):
def inner():
print('alex')
v=arg()
print('wusir')
return v
return inner
#第一步:执行index并将下面的函数当作参数传递:相当于func(index)
#第二步:将func的返回值重新赋值给下面的函数 相当于:index=func(index)
@func
def index():
print(123)
return 666 print(index)

装饰器的编写格式

def 外部函数(参数):
def 内部函数(*args,**kwargs):
return 参数(*args,**kwargs)
return(内层函数)
@外层函数
def index()
pass inde()

最新文章

  1. Java多线程20:多线程下的其他组件之CountDownLatch、Semaphore、Exchanger
  2. Eclipse下Android开发的问题:Installation error: INSTALL_FAILED_NO_MATCHING_ABIS 解决办法
  3. CUBRID学习笔记 12防火墙设置 linux
  4. xcode 5.0 以上去掉icon高亮方法&iOS5白图标问题
  5. mvc 控制器,视图,Razor 语法
  6. Silverlight - GPU加速
  7. JSP中嵌入java代码方式以及指令
  8. ADO.NET 快速入门(二):执行命令
  9. 数据库笔试题(经典select语句的用法)【转载】
  10. MDK建立STM32F103*开发模板
  11. bzoj2466,poj1222
  12. rtsp转发服务器设计
  13. 我对Laravel ThinkPHP Yii symfony2 CI cakephp 的看法
  14. angularjs jsonp跨域
  15. 【Git】Git工具常用命令
  16. vs2013突然打不开项目,项目全部不兼容
  17. 百川sdk----自己的WebViewClient不被执行【废弃,新版本百川已修复此问题】
  18. myBatis框架_关于怎么获得多表查询的总记录数
  19. JAVA8之函数式接口
  20. Android4.0以上版本Http请求的问题

热门文章

  1. sqljob
  2. Django 的 CBV&FBV
  3. BZOJ 3168 Luogu P4100 [HEOI2013]钙铁锌硒维生素 (矩阵求逆、二分图匹配)
  4. 8.Python标识符命名规范
  5. Sql 中的as是什么意思 + 无列名注入解析
  6. linux crontab -e生成日期格式
  7. imu tool使用
  8. C# 创建和引入动态链接库dll文件
  9. 阶段3 1.Mybatis_08.动态SQL_01.mybatis中的动态sql语句-if标签
  10. 测开之路一百三十八:会话管理之session