# -*- 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的作用,就是給被修飾的函數的一些屬性值賦值給修飾器函數。
謝謝!
