动态添加参数
有没有办法在调用函数的时候动态地添加参数?比如说:
def getParameters(num):
parray = [i for i in range(num)]
params = tuple(parray)
return params
def func(*args, **kwargs):
pass
每次调用函数func
时,参数的数量是由另一个函数getParameters
决定的,而这个数量在代码执行之前是未知的。
举个例子,在代码中,有人可能会这样做:
param1 = getParameters(2)
# they wants to use param1 to the func
# which would be func(1, 2)
param2 = getParameters(6)
# Likewise, this would be func(1, 2, 3, 4, 5, 6)
但是我不能直接把这个元组传给函数,因为这样Python会把它当作一个单独的参数来处理。
因为*args
是一个元组,里面包含了那些额外的参数,有没有办法把*args
替换成param1
(同样的道理也适用于**kwargs
)?
1 个回答
2
要把一个包含位置参数的元组和/或一个包含关键字参数的字典传递给一个函数,可以使用相同的语法,也就是用星号(*)来解包:
def show_args(*args, **kwargs):
print(args, kwargs)
show_args(*(1, 2, 3), **{4: True, 5: False})
在你的情况下,可以这样做:
func(*param1)
不过,要注意的是,你的 getParameters
其实并没有 返回
任何东西。