# -*- coding: utf-8 -*- # author:baoshan def wrapper(func): def inner_function(): pass return inner_function @wrapper def wrapped(): pass print(wrapped.__name__) # inner_function def wrapped2(): pass print(wrapper(wrapped2).__name__) # inner_function # 为了避免上述情况的产生,方法是使用functools.wraps装饰器, # 它的作用就是被修饰的函数(wrapped)的一些属性值赋值给修饰器函数(wrapper), # 最终让属性的显示更符合我们的直觉。 from functools import wraps def wrapper2(func): @wraps(func) def inner_function(): pass return inner_function @wrapper2 def wrapped3(): pass print(wrapped3.__name__)# wrapped3
Python装饰器之functools.wraps的作用,就是给被修饰的函数的一些属性值赋值给修饰器函数。
谢谢!