1.装饰器
用来增强原有函数的功能,但又不修改原本的函数,进一步理解认为通过对函数a内部再定义一个新函数b,让函数b的返回值为a(*k,**kw)
a的返回值为b的函数名,最终达到偷换函数名,但原有功能不改变。还可以再b函数的内部加入新的功能。
(注:括号里的参数个人理解为,用来保证原有函数的入口参数不变),
例:打印一个时间
def now():
print('2021-1-11')
now()
f=now
f()
print(f.__name__)
结果
2021-1-11
2021-1-11
now
加入装饰器
代码:
def log(func):
def wrapper(*args,**kw):
print('call %s()' % func.__name__)
return func(*args,**kw)
return wrapper
@log
def now():
print('2021-1-11')
now()
print(now.__name__)
输出
call now()
2021-1-11
wrapper
注:此处的@是装饰器的一种语法,通过最后一行的结果,还可以发现函数的函数名已经悄悄发生改变
本文详细介绍了Python装饰器的工作原理及使用方法。装饰器是一种特殊类型的函数,可以用来增强其他函数的功能而不改变其源代码。通过定义内层函数并在外层函数中调用它,可以在不直接修改原始函数的情况下增加额外的功能。
870

被折叠的 条评论
为什么被折叠?



