Python装饰器
所谓装饰器其实就是把函数名作为参数传递给另一个参数,使得每次调用这个被装饰函数的时候都可以在调用前做点什么,或者在调用后做点什么,甚至可以不调用被装饰函数,因为被装饰函数的调用都是在装饰函数里,如果在装饰函数里不调用。
- 不调用
def dec(func):
print("this is dec")
def wrap(*args, **kwargs):
print("this is wrap")
return wrap
@dec
def be_dec():
print("this is bedec")
be_dec()
this is dec
this is wrap
- 调用(利用装饰函数将被装饰函数参数的首字母大写)
def dec(func):
print("this is dec")
def wrap(*args, **kwargs):
re = func(*args,**kwargs) //re = args[0]
print("this is wrap")
re = re.capitalize()
return re
return wrap
@dec
def be_dec(x):
print("this is be_dec")
return x
print(be_dec("hi"))
this is dec
this is be_dec
this is wrap
Hi
被装饰函数的参数可以在装饰函数中使用(利用*args和kwargs,但是如果bedec_用的是默认参数的话,*args和kwargs就都是空,因为在主函数调用be_dec的时候未传入指定参数)