装饰器举例
def outer (func):
def inner():
print('hello')
return func()
print('end')
return r
return inner
@outer ----------------写上这个@ 符号就代表着使用装饰器
def f1():
print('f1')
def f2():
print('f2')
原理剖析
符号:@ outer
def f1()
一、第一步执行outer函数,并将下面的函数名f1,当做参数
二、第二部将outer的返回值重新赋值给f1
三、新f1函数等于inner ,执行f1函数就是执行inner()函数
本质:将原函数封装到函数里等于一个新函数,执行原函数和新函数
四、带参数的装饰器
def outer (func):
def inner(a1,a2):
print('hello')
r= func(a1,a2)
print('end')
return r
return inner
@outer ----------------写上这个@ 符号就代表着使用装饰器
def f1(a1,a2):
print('f1')
return a1+a2
f1(1,2)
五、多参数的装饰器
def outer(func):
def inner(*args,**kwargs):
print('123')
ret = func(*args,**kwargs)
print('456')
return ret
return inner
@outer
def index(a1,a2)
print(‘’非常复杂‘’)
return = a1 +a2