调用带有未知数量参数的Python函数

9

我正在编写一个小脚本,其中我调用itertools.product的方式如下:

for p in  product(list1,list2,list3):
            self.createFile(p)

有没有一种方法可以在不事先知道包括多少列表的情况下调用此函数?谢谢。

1
这不是关于如何“在Python中解包列表”的问题。解包列表是这个问题的答案,而不是问题 - divenex
2个回答

22
你可以使用星号或展开操作符(它有一些名称):for p in product(*lists),其中lists是你想要传递的事物的元组或列表。
def func(a,b):
    print (a,b)

args=(1,2)
func(*args)

当定义一个函数以允许它接受可变数量的参数时,您可以使用类似的方法:

def func2(*args): #unpacking
   print(args)  #args is a tuple

func2(1,2)  #prints (1, 2)

当然,你可以将splat运算符与可变数量的参数组合使用:

args = (1,2,3)
func2(*args) #prints (1, 2, 3)

4
使用展开运算符(*)来传递和收集未知数量的位置参数。
def func(*args):
   pass

lis = [1,2,3,4,5]
func(*lis)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接