【问题标题】:Calling python function with an unknown number of arguments [duplicate]使用未知数量的参数调用python函数[重复]
【发布时间】:2012-08-11 23:14:11
【问题描述】:

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

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

有没有办法让我在事先不知道要包含多少个列表的情况下调用此函数?

谢谢

【问题讨论】:

  • 这与如何“在 Python 中解压列表”不是同一个问题。解压列表是这个问题的答案,而不是问题

标签: python arguments


【解决方案1】:

您可以使用星号或 splat 运算符(它有几个名称):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)

【讨论】:

    【解决方案2】:

    使用 splat 运算符 (*) 传递和收集未知数量的参数位置参数。

    def func(*args):
       pass
    
    lis = [1,2,3,4,5]
    func(*lis)
    

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      相关资源
      最近更新 更多