1 def func(func1): 2 def add_func(a,b): 3 print('lalala') 4 return func1(a,b) 5 return add_func 6 7 8 def func1(x,y): 9 print(x+y) 10 11 12 func(func1)(1,2) 13 14 #上面的函数就等于 15 #@func 16 #def func1(x,y): 17 # print(x+y) 18 #func1(1,2)
装饰器函数默认第一个参数是函数名
里面需要增加功能的函数的参数 是和传入进来函数的参数是一样的
一定要一 一对应 不然会报错
然后装饰器带参数的
1 #装饰器函数带参数 2 #出去玩,不出去玩 3 def arg_func(arg): 4 def _func(func): 5 def _func1(): 6 if arg == 'good': 7 print('出去玩') 8 if arg == 'bad': 9 print('不出去玩') 10 return func() 11 return _func1 12 return _func 13 #arg_func 装饰器函数的参数接收函数,因为装饰器函数只能是接收一个函数作为参数 14 #arg_func -> _func 接收我们装饰器函数的参数 15 #_func -> _func1 闭包函数 添加功能 16 #_func1 -> func 执行添加的功能,执行被装饰的函数 17 18 @arg_func('bad') 19 def func(): 20 print('bad day') 21 22 @arg_func('good') 23 def func1(): 24 print('good day') 25 26 func() 27 func1()