【发布时间】:2023-04-06 19:37:01
【问题描述】:
def logger(func):
def inner(*args, **kwargs): #1
print ('Arguments were: {}, {}'.format(args, kwargs))
return func(*args, **kwargs) #2
return inner
def add (x,y):
return x+y
add = logger(add)
add(1, 2)
代码不使用@logger,基本上用add = logger(add)代替。
def logger(func):
def inner(*args, **kwargs): #1
print ('Arguments were: {}, {}'.format(args, kwargs))
return func(*args, **kwargs) #2
return inner
@logger
def add (x,y):
return x+y
add(1, 2)
使用@logger、add = logger (add) 的代码已被删除。
两者的输出相同且正确
我仍在学习 python 并试图了解装饰器如何为这两个示例工作。
我想知道流程是如何工作的。我知道@logger 与add = logger(add) 相同,然后示例使用add (1,2)。这意味着add(1,2) = logger(add(1,2))?
但是,如果是这种情况,为什么我尝试logger(add(1,2))时不起作用?
基本上我正在尝试结合
add = logger(add)
add(1,2)
类似
logger(add(1,2))
这不起作用。结合它的目的是让我可以更好地理解示例。
【问题讨论】:
标签: python decorator python-decorators