python --装饰器内容讲解
程序员文章站
2022-06-02 21:34:56
python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能。 3.1 定义装饰器,定义函数。 def xxx(): 函数体 3.2 应用装饰器 在需要使用的函数、方法上@xxx即可 ......
python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能。
3.1 定义装饰器,定义函数。
def xxx():
函数体
3.2 应用装饰器
在需要使用的函数、方法上@xxx即可。
注意:只要函数应用装饰器,那么函数就被重新定义,重新定义为:装饰器的内层函数。
装饰器含无参数的示例:
1 def outer(func): 2 def inner(): 3 print('hello') 4 print('hello') 5 print('hello') 6 #原f1函数 7 r = func() # r = none 8 print('end') 9 print('end') 10 print('end') 11 reture r 12 reture inner 13 14 @outer 15 def f1(): 16 return "f1" 17 18 f1() #调用者 19 20 #原理: 21 #1、执行outer函数,并且将下面的函数名,当做参数,即f1 = func 22 #2、将outer的返回值重新赋值给f1 = outer的返回值 23 #3、新的f1函数 = inner 24 25 """ 26 输出结果: 27 hello 28 hello 29 hello 30 f1 31 end 32 end 33 end 34 """
装饰器含传递两个参数的示例:
1 def outer(func): 2 def inner(a1, a2): #传递两个参数 3 print("123") 4 ret = func(a1, a2) #传递两个参数 5 print("456") 6 return ret 7 reture inner 8 9 @outer 10 def index(a1, a2): 11 print("操作很复杂") 12 return a1 + a2 13 14 index(1, 2) #调用者
装饰器含n个参数的函数示例:
注意:一个函数是可以应用多个装饰器。多个装饰器时先执行最外层的装饰器。
1 def outer(func): 2 def inner(*arg, **kwargs): #可接收多个参数 3 print("123") 4 ret = func(*arg, **kwargs) #可接收多个参数 5 print("456") 6 return ret 7 reture inner 8 9 @outer 10 def f1(arg): #传递一个参数 11 print("我传递了一个参数") 12 reture "f1" 13 14 @outer 15 def index(a1, a2): #传递两个参数 16 print("我传递了一个参数") 17 return a1 + a2 18 19 @outer 20 def f2(a1, a2, a3): 21 print("我传递三个参数") 22 return "f2" 23 24 25 f1(123) #调用者传递一个参数 26 index(1, 2) #调用者传递两个参数 27 f2(1, 2, 3) #调用者传递三个参数
下一篇: 容易被爆头