-2
def pass_thru(func_to_decorate):
def new_func(*args, **kwargs): #1
print("Function has been decorated. Congratulations.")
# Do whatever else you want here
return func_to_decorate(*args, **kwargs) #2
return new_func
def print_args(*args):
for arg in args:
print(arg)
a = pass_thru(print_args)
a(1,2,3)
>> Function has been decorated. Congratulations.
1
2
3
我知道*args
在#1中使用,因为它是一个函数声明。但为什么有必要在#2中编写*args
,即使它不是函数声明?为什么我们需要装饰器中的`* args`?
将位置参数捆绑到args的元组中,然后在调用包装函数时将它们分开放回单独的参数中。 – jonrsharpe