【发布时间】:2018-02-23 03:02:57
【问题描述】:
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 中使用,因为它是一个函数声明。但是为什么*args即使不是函数声明也要在#2中写呢?
【问题讨论】:
-
您将位置参数捆绑到 args 元组中,然后在调用包装函数时将它们解绑成单独的参数。