动态添加参数

1 投票
1 回答
2195 浏览
提问于 2025-04-18 09:04

有没有办法在调用函数的时候动态地添加参数?比如说:

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 其实并没有 返回 任何东西。

撰写回答