python 内置的装饰器 functools
python 内置的装饰器,主要用于修饰装饰器,将原函数的元信息拷贝到装饰器里面的函数中,保证装饰器功能不会影响原函数的功能,例如有些依赖函数签名的代码执行就会出错。
# 没有用 functools.wraps 之前
def logged(func):
def with_logging(*args, **kwargs):
print(func.__name__) # 输出 'with_logging'
print(func.__doc__) # 输出 None
return func(*args, **kwargs)
return with_logging
@logged
def f(x):
"""does some math"""
return x + x * x
f(2)
# with_logging
# None
# 6
# 使用 functools.wraps 将原函数元数据复制到装饰器的函数
from functools import wraps
def logged(func):
@wraps(func)
def with_logging(*args, **kwargs):
print(func.__name__) # 输出 'f'
print(func.__doc__) # 输出 'does some math'
return func(*args, **kwargs)
return with_logging
@logged
def f(x):
"""does some math"""
return x + x * x
f(2)
# f
# does some math
# 6
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论