Python基础编程闭包与装饰器
2024-09-05 18:18:39
闭包的定义
- 闭包是嵌套在函数中的函数。
- 闭包必须是内层函数对外层函数的变量(非全局变量)的引用。
闭包格式:
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()
最新文章
- Java多线程20:多线程下的其他组件之CountDownLatch、Semaphore、Exchanger
- Eclipse下Android开发的问题:Installation error: INSTALL_FAILED_NO_MATCHING_ABIS 解决办法
- CUBRID学习笔记 12防火墙设置 linux
- xcode 5.0 以上去掉icon高亮方法&;iOS5白图标问题
- mvc 控制器,视图,Razor 语法
- Silverlight - GPU加速
- JSP中嵌入java代码方式以及指令
- ADO.NET 快速入门(二):执行命令
- 数据库笔试题(经典select语句的用法)【转载】
- MDK建立STM32F103*开发模板
- bzoj2466,poj1222
- rtsp转发服务器设计
- 我对Laravel ThinkPHP Yii symfony2 CI cakephp 的看法
- angularjs jsonp跨域
- 【Git】Git工具常用命令
- vs2013突然打不开项目,项目全部不兼容
- 百川sdk----自己的WebViewClient不被执行【废弃,新版本百川已修复此问题】
- myBatis框架_关于怎么获得多表查询的总记录数
- JAVA8之函数式接口
- Android4.0以上版本Http请求的问题
热门文章
- sqljob
- Django 的 CBV&;FBV
- BZOJ 3168 Luogu P4100 [HEOI2013]钙铁锌硒维生素 (矩阵求逆、二分图匹配)
- 8.Python标识符命名规范
- Sql 中的as是什么意思 + 无列名注入解析
- linux crontab -e生成日期格式
- imu tool使用
- C# 创建和引入动态链接库dll文件
- 阶段3 1.Mybatis_08.动态SQL_01.mybatis中的动态sql语句-if标签
- 测开之路一百三十八:会话管理之session