装饰器函数精讲
阅读目录
举例函数
import time def timer(func): def inner(): start = time.time() func() print(time.time() - start) return inner @timer #==> func1 = timer(func1) def func1():
time.sleep(0.1) print('in func1') func1()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
in func1 0.10062646865844727
装饰器的本质:一个闭包函数
装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展
装饰一个带参数的函数
def timer(func): def inner(a): start = time.time() func(a) print(time.time() - start) return inner @timer def func1(a): print(a) func1(1)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 0.0
两个函数,需要传递的参数不一样
import time def timer(func): def inner(*args,**kwargs): start = time.time() re = func(*args,**kwargs) print(time.time() - start) return re return inner @timer #==> func1 = timer(func1) def func1(a,b): print('in func1') @timer #==> func2 = timer(func2) def func2(a): print('in func2 and get a:%s'%(a)) return 'fun2 over' func1('aaaaaa','bbbbbb') print(func2('aaaaaa'))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
ni shi sb 0.10007596015930176 in func1 0.0 in func2 and get a:aaaaaa 0.0 fun2 over
装饰器的固定格式:
def timer(func): def inner(*args,**kwargs): '''执行函数之前要做的''' re = func(*args,**kwargs) '''执行函数之后要做的''' return re return inner
带参数的装饰器
1 def outer(flag): 3 def timer(func): 5 def inner(*args,**kwargs): 8 if flag: print('''执行函数之前要做的''') 9 re = func(*args,**kwargs) 11 if flag: print('''执行函数之后要做的''') 12 return re 6 return inner 4 return timer 2 @outer(False) def func(): 10 print(111) 7 func()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
111
多个装饰器装饰同一个函数
def wrapper1(func): def inner(): print('wrapper1 ,before func') func() print('wrapper1 ,after func') return inner def wrapper2(func): def inner(): print('wrapper2 ,before func') func() print('wrapper2 ,after func') return inner @wrapper2 @wrapper1 def f(): print('in f') f()
洋洋人生如戏一场,芸芸众生各属一角。此戏说长便长,论时百年;说长便短,稍纵即逝。生命沧海一粟,在万物中脆弱瞬间即逝为最,随风而来,随风为土,虽说百年,亦不过宇宙间流星划过夜空,一闪而过,无迹无痕,虽曾有闪烁,但即刻消失的无影无踪。无论此戏是悲是喜。
人生轻松无极限,生活快乐遂心愿,活的好过的开心,心态代表一个人的精神状态,只要有良好的心态,你才能每天保持饱满的心情。心态好,运气就好。精神打起来,好运自然来。记住做任何事情一定要有积极的心态,一旦失去他,就跳出去,要学会调整心态, 有良好的心态工作。
人生过的是心情,生活活的是心态,人生随其然,生活何其烦,累了就睡觉,醒了就微笑,走过一些路,才知道辛苦;登过一些山,才知道艰难;趟过一些河,才知道跋涉;跨过一些坎,才知道超越;经过一些事,才知道经验;阅过一些人,才知道历练;读过一些书,才知道财富。