@wraps(view_func)的作用: 不改变使用装饰器原有函数的结构(如name, doc)
- 不适用@wraps 的时候
def decorator(func): """this is decorator __doc__""" def wrapper(*args, **kwargs): """this is wrapper __doc__""" print("this is wrapper method") return func(*args, **kwargs) return wrapper @decorator def test(): """this is test __doc__""" print("this is test method") print("__name__: ", test.__name__) print("__doc__: ", test.__doc__) """ 结果: __name__: wrapper __doc__: this is wrapper __doc__ """2.使用@wraps 的时候
from functools import wraps def decorator(func): """this is decorator __doc__""" @wraps(func) def wrapper(*args, **kwargs): """this is wrapper __doc__""" print("this is wrapper method") return func(*args, **kwargs) return wrapper @decorator def test(): """this is test __doc__""" print("this is test method") print("__name__: ", test.__name__) print("__doc__: ", test.__doc__) """ 结果: __name__: test __doc__: this is test __doc__ """
本文探讨了在Python中使用@wraps装饰器的重要性。通过实例对比展示,在应用装饰器时如何保持被装饰函数原有的名称和文档字符串不变,确保函数的可读性和调试的便利性。
1590

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



