passing a tuple in *args
我想把一个元组(或者一个列表)作为一个值序列(参数)传递给一个函数。然后应将元组作为参数解包到*arg中。
例如,这很明显:
1 2 3 4 5 | def func(*args): for i in args: print"i =", i func('a', 'b', 3, 'something') |
但我想做的是:
1 2 | tup = ('a1', 'a2', 4, 'something-else') func(tup) |
这应该和第一种情况类似。我想我应该在这里转载和评估,但不确定具体如何。
我知道我可以在函数中传递元组,然后在主体中解包它,但这里的问题是如何在函数调用本身中解包它。
您可以在调用期间将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | >>> MyTuple = ('one', 2, [3]) >>> >>> def func(*args): ... for arg in args: ... print(arg) ... >>> >>> func(*MyTuple) one 2 [3] >>> >>> func(MyTuple) ('one', 2, [3]) |
当您调用函数时,您只需使用
1 2 3 4 5 | >>> func(*tup) i = a1 i = a2 i = 4 i = something-else |
这就相当于
1 2 3 4 5 | >>> def func2(a, b, c, d): ... print(a, b, c, d) ... >>> func2(*tup) ('a1', 'a2', 4, 'something-else') |
有关语法的更深入背景,请参见此处的示例。
如果要解包元组,可以使用*参数。方法定义如下:
1 2 3 | def func(*tup): for i in tup: print(print"i =",i) |
现在调用您的方法:
1 2 | tup = ('a1','a1',4,'something-else') func(*tup) |
它将产生你的输出作为-
1 2 3 4 | i = a1 i = a2 i = 4 i = something-else |