python自学第9天,装饰器
2024-09-01 10:24:10
装饰器:本质是函数(装饰其它函数) 就是为其它函数添加附加功能
原则:1.不能修改被装饰函数的源代码
2.不能修改被装饰的函数的调用方式
实现装饰器知识储备:
1.函数即变量
2.高阶函数:a.把一个函数名当做实参传给另外一个函数,(在不修改被装饰函数源代码情况下添加功能)b.返回值中包含函数名(不修改函数的调用方式)
3.嵌套函数a.
匿名函数:
lambda 高阶函数
import time
def car():#定义一个源代码
print ("in the car") def change_test(func):#定义一个改变函数的函数,传递函数参数
time_start=time.time()
time.sleep(3)
time_stop=time.time()
print("sleep in the change_test %s"%(time_stop-time_start))
return func
car=change_test(car)#把内存地址赋给原来的函数标识
car()
实现装饰函数
import time
#实现功能,在不能改变原来的函数前添加功能。 #实现在测试函数的运行时间,不能改变原函数 def deco(func):#定义一个装饰器
def run_time(*args,**kwargs):#嵌套一个运行时间的函数 无论传什么参数都可以
start_time=time.time()
func(*args,**kwargs)#运行 函数 无论传什么参数都可以
stop_time=time.time()
print("该函数运行的时间是%s"%(stop_time-start_time)) return run_time#返回嵌套函数的内存地址 @deco#这一步是需要在哪个函数上装饰就在哪个函数前面加装饰。 它的功能相当于是比如 car=deco(car)
def car():#定义一个原函数
time.sleep(2)
print("in the car")
@deco
def baike(name):#有参数的函数
print("in the baike %s"%name) car()
baike("hunterYi")
最新文章
- 基于log4net的帮助类Log
- 6 Candy_Leetcode
- Hadoop学习2
- Spring Framework------>;version4.3.5.RELAESE----->;Reference Documentation学习心得----->;Spring Framework的依赖注入和控制反转
- 今天简单说一下cdc 的使用
- Linux (二) vi
- Diskpart命令安装系统小结
- Mybatis3+Spring4+SpringMVC4 整合
- java中汉字自动转换成拼音
- 出色的 JavaScript API 设计秘诀
- ajax。表单
- Android利用反射获取状态栏(StatusBar)高度
- 【APS.NET 框架系列】浅谈ASP.NET 框架
- 整理volatile相关知识点
- L3-020 至多删三个字符 (30 分) 线性dp
- ubuntu apache2下目录结构以及重写规则
- 在Web根目录下建立testdb.php文件内容
- leetcode-algorithms-8 String to Integer (atoi)
- Golang福利爬虫
- web spring 容器