def logging_decorator(function):
def wrapper(*args, **kwargs):
print(f'This is {function.__name__}')
output = function(*args, **kwargs)
return wrapper
@logging_decorator
def a_function(a, b, c):
print(f'This is the Function name {a_function.__name__}')
return a * b * c
object = a_function(3, 4, 5)
一直在玩 python 装饰器,我不明白以下内容:
为什么
print(f'This is the Function name {a_function.__name__}')
output 'This is the Function name wrapper'?输出不应该是“This is the Function name a_function”吗?
定义函数后。
a_function = def (a, b, c){...}
包装器将包装您的函数。你可以这样想象:
a_function = logging_decorator(a_function)
函数
logging_decorator
返回一个函数名wrapper
。现在,a_function
只是一个参考,链接到功能wrapper
为了得到你所期望的,我试过这个:
from functools import wraps
def logging_decorator(function):
@wraps(function)
def wrapper(*args, **kwargs):
print(f'This is {function.__name__}')
output = function(*args, **kwargs)
return wrapper
@logging_decorator
def a_function(a, b, c):
print(f'This is the Function name {a_function.__name__}')
return a * b * c
@logging_decorator
def b_function(a, b, c):
print(f'This is the Function name {b_function.__name__}')
return a * b * c
object = a_function(3, 4, 5)
object = b_function(3, 4, 5)
它解决了你的问题。