Python9-装饰器-day11
2024-10-15 21:04:40
import time
def timmer(f): #装饰器函数
def inner():
start = time.time()
ret = f() #被装饰的函数
end = time.time()
print(end-start)
return ret
return inner
@timmer #魔法糖 @装饰器函数名 ====>func = timmer(func)
def func(): #被装饰的函数
time.sleep(0.01)
print('hahaha')
return 'good st'
# func = timmer(func)
ret = func()
print(ret)
#不想修改函数的调用方式,但是还想在原来的函数前后添加功能
#timmer就是一个装饰器函数,只对一个函数有一些装饰作用
#原则: 开放封闭原则
#开放 :对扩展是开放的
#封闭 :对修改是封闭的
#装饰带参数函数的装饰器
def timmer(f): #装饰器函数
def inner(a):
start = time.time()
ret = f(a) #被装饰的函数
end = time.time()
print(end-start)
return ret
return inner
@timmer #魔法糖 @装饰器函数名
def func(a): #被装饰的函数
time.sleep(0.01)
print('hahaha',a)
return 'good st'
# func = timmer(func)
ret = func(1)
print(ret)
多参数
def timmer(f): #装饰器函数
def inner(*args,**kwargs):
start = time.time()
ret = f(*args,**kwargs) #被装饰的函数
end = time.time()
print(end - start)
return ret
return inner @timmer #魔法糖 @装饰器函数名
def func(a,b): #被装饰的函数
time.sleep(0.01)
print('hahaha',a,b)
return 'good st' @timmer #魔法糖 @装饰器函数名
def func1(a): #被装饰的函数
time.sleep(0.01)
print('hahaha',a)
return 'good st' # func = timmer(func)
ret = func(1,2)
ret = func(1,b=2)
print(ret)
装饰器定式
def wapper(f): #装饰器函数 f是被装饰的函数
def inner(*args,**kwargs):
'''在被装饰函数之前要做的事'''
ret = f(*args,**kwargs) #被装饰的函数
'''在被装饰函数之后要做的事'''
return ret
return inner @wapperr #魔法糖 @装饰器函数名
def func(a,b): #被装饰的函数
time.sleep(0.01)
print('hahaha',a,b)
return 'good st'
最新文章
- iOS开发资源(持续更新)
- Minor【 PHP框架】6.代理
- ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php
- java多线程之 基本概念
- PHP类型转换
- CoordinatorLayout自定义Bahavior特效及其源码分析
- http_load压力测试windows版使用方法及结果分析
- HDU 2051(进制转换)
- JVM垃圾回收机制概述
- 如何在Github创建repository
- php 中构造函数和析构函数
- 使用 IntraWeb (29) - 基本控件之 TIWAutherList、TIWAutherINI、TIWAutherEvent
- genieacs Installation on Ubuntu14.04
- HttpClient 通信工具类
- Linux命令: 结束命令
- Chapter7(类) --C++Prime笔记
- python接口自动化24-有token的接口项目使用unittest框架设计
- 关于Cocos2d-x物理引擎用到的类和使用
- win7 免安装MariaDB
- TPS和事务响应时间的关系