-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