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__}')
输出'这是函数名包装器'?输出不应该是'这是函数名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)
它解决了你的问题。