1.装饰器到底是干嘛的?
准对代码里的函数,功能不完善,但又不能随便动原函数,因此呢,引入装饰器这一个概念,给原函数添加新的功能模块。
2.装饰器概念呀,本质上是个函数,一个用来包装函数的函数,返回被包装的函数对象。
举个例子吧。
from functools import wraps
def wrapper(func):
@wraps(func)
def inner(*args,**kwargs):
print('在被装饰的函数执行之前做的事')
ret = func(*args,**kwargs)
print('在被装饰的函数执行之后做的事')
return ret #注意不能带括号
return inner
@wrapper #holiday = wrapper(holiday)
def holiday(day):
'''Attention please'''
print('hello world %s'%day)
return 'Oh hahaha'
print(holiday.__name__)
print(holiday.__doc__)
ret = holiday(3)
print(ret)
1)from functools import wraps:装饰包装器的装饰器
2)@wraps/@wrapper:这个呢,是个语法糖的概念,就是这样叫而已咯,本质上@wrapper #holiday = wrapper(holiday)
,@wraps(func)这个是含参数的装饰器。
3)print(holiday.name) 注意啊,name前后是双下划线,显示函数名
print(holiday.doc),显示隐藏内容