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'

最新文章

  1. iOS开发资源(持续更新)
  2. Minor【 PHP框架】6.代理
  3. ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php
  4. java多线程之 基本概念
  5. PHP类型转换
  6. CoordinatorLayout自定义Bahavior特效及其源码分析
  7. http_load压力测试windows版使用方法及结果分析
  8. HDU 2051(进制转换)
  9. JVM垃圾回收机制概述
  10. 如何在Github创建repository
  11. php 中构造函数和析构函数
  12. 使用 IntraWeb (29) - 基本控件之 TIWAutherList、TIWAutherINI、TIWAutherEvent
  13. genieacs Installation on Ubuntu14.04
  14. HttpClient 通信工具类
  15. Linux命令: 结束命令
  16. Chapter7(类) --C++Prime笔记
  17. python接口自动化24-有token的接口项目使用unittest框架设计
  18. 关于Cocos2d-x物理引擎用到的类和使用
  19. win7 免安装MariaDB
  20. TPS和事务响应时间的关系

热门文章

  1. 去掉UItalbeview横线
  2. GYM 101889B(找规律)
  3. Codeforces Round #396 (Div. 2) B
  4. SVG图像学习
  5. 修复在unix系统里的文件打开不能显示正常的颜色问题
  6. 运用session来控制用户的异地登录被挤下线情况
  7. 转 SecureCRT中文乱码解决方法
  8. ES6字符串操作讲解(详细),字符串编码表,代码单元,码点的详细介绍。
  9. vs2013修改为双击打开文件
  10. JS的文本框验证以及form表单的提交阻止