标签:**kwargs timer 返回值 执行 意思 闭包函数 after 调用 time
1、装饰器
装饰器实际上就是一个对函数中的闭包的实际应用,他的本质是一个闭包函数。
2、装饰器的功能:
再不修改原函数及其调用方式的情况下对原函数功能进行扩展。
3、装饰器的固定格式
1 def timer(func): 2 def inner(*args,**kwargs): 3 ‘‘‘执行函数之前要做的‘‘‘ 4 re = func(*args,**kwargs) #*args、**kwargs将动态参数接收到的元祖解压成分散的个体,re接收被装饰函数中的返回值 5 ‘‘‘执行函数之后要做的‘‘‘ 6 return re 7 return inner 8 语法糖:@装饰器函数名 == 被装饰函数名=装饰器函数名(被装饰函数名)
4、开放封闭原则
开发领域中有一个开放封闭原则即对扩展开放,对修改封闭。
意思就是一个函数让它扩展新功能,因为之前的开发过程中可能功能需求并没有考虑周全如果不能扩展新功能的话产品就不完善了,但是如果直接修改源代码则会影响这个函数的其他使用者,所以一般情况下不允许修改源代码。
5、带参数的装饰器
1 def outer(flag): 2 def timer(func): 3 def inner(*args,**kwargs): 4 if flag: 5 print(‘‘‘执行函数之前要做的‘‘‘) 6 re = func(*args,**kwargs) 7 if flag: 8 print(‘‘‘执行函数之后要做的‘‘‘) 9 return re 10 return inner 11 return timer 12 13 @outer(False) 14 def func(): 15 print(111) 16 17 func()
6、多个装饰器装饰一个函数
1 def wrapper1(func): 2 def inner(): 3 print(‘wrapper1 ,before func‘) 4 func() 5 print(‘wrapper1 ,after func‘) 6 return inner 7 8 def wrapper2(func): 9 def inner(): 10 print(‘wrapper2 ,before func‘) 11 func() 12 print(‘wrapper2 ,after func‘) 13 return inner 14 15 @wrapper2 16 @wrapper1 17 def f(): 18 print(‘in f‘) 19 20 f()
标签:**kwargs timer 返回值 执行 意思 闭包函数 after 调用 time
原文地址:http://www.cnblogs.com/lianxuebin/p/7252209.html