一、#1.执行outer函数,并且将其下面的函数名,当作参数 #2、将outer的返回值重新赋值给f1 = outer的返回值 #3.新f1 = inner #4.func = 原f1
1 #!/usr/bin/env python 2 def outer(func) : 3 def inner() : 4 print("hello") 5 print("hello") 6 print("hello") 7 r = func() 8 print("end") 9 print("end") 10 print("end") 11 return r 12 return inner 13 @outer 14 def f1() : 15 print("F1") 16 #1.执行outer函数,并且将其下面的函数名,当作参数 17 #2、将outer的返回值重新赋值给f1 = outer的返回值 18 #3.新f1 = inner 19 f1()
二、装饰器多参数的使用(*arg, **kwargs)
1 #!/usr/bin/env python 2 def oute(func) : 3 """ 4 5 :param func: 6 :return: 7 """ 8 def inner(*arg, **kwargs) : 9 print("abvc") 10 r = func(*arg, **kwargs) 11 print("456") 12 return r 13 return inner 14 @oute 15 def outer(func) : 16 def inner(*arg, **kwargs) : 17 print("123") 18 r = func(*arg, **kwargs) 19 print("789") 20 return r 21 return inner 22 # @oute 23 @outer 24 25 def f1(a1, a2) : 26 print("321") 27 def f2(a1, a2) : 28 print("dfas") 29 f1(1,2)
结果为:
abvc
456
123
321
789
1 #!/usr/bin/env python 2 def oute(func) : 3 """ 4 5 :param func: 6 :return: 7 """ 8 def inner(*arg, **kwargs) : 9 print("abvc") 10 r = func(*arg, **kwargs) 11 print("456") 12 return r 13 return inner 14 # @oute 15 def outer(func) : 16 def inner(*arg, **kwargs) : 17 print("123") 18 r = func(*arg, **kwargs) 19 print("789") 20 return r 21 return inner 22 @oute 23 @outer 24 25 def f1(a1, a2) : 26 print("321") 27 def f2(a1, a2) : 28 print("dfas") 29 f1(1,2)
结果为:
abvc
123
321
789
456
时间: 2024-12-17 02:27:23