在 *args 中传递一个元组
passing a tuple in *args
我想将元组(或列表)作为值(参数)序列传递给函数。然后应该将元组作为参数解压缩到 *arg.
例如,这是明确的:
def func(*args):
for i in args:
print "i = ", i
func('a', 'b', 3, 'something')
但我想做的是:
tup = ('a1', 'a2', 4, 'something-else')
func(tup)
这应该与第一种情况类似。
我想我应该在这里使用 reprint 和 eval 但不确定具体如何。
我知道我可以在函数中传递元组,然后在函数体内解包,但我的问题是如何在函数调用本身中解包。
调用函数时直接使用func(*tup)
解压元组即可。
>>> func(*tup)
i = a1
i = a2
i = 4
i = something-else
这相当于 func(tup[0], tup[1], tup[2], ...)
。如果函数需要多个单独的参数,同样适用:
>>> def func2(a, b, c, d):
... print(a, b, c, d)
...
>>> func2(*tup)
('a1', 'a2', 4, 'something-else')
参见例如here 了解更深入的语法背景知识。
您可以在调用期间通过在元组标识符前放置 *
来解压缩元组。这使您可以轻松区分应该解包的元组和不应该解包的元组。这是一个例子:
>>> MyTuple = ('one', 2, [3])
>>>
>>> def func(*args):
... for arg in args:
... print(arg)
...
>>>
>>> func(*MyTuple)
one
2
[3]
>>>
>>> func(MyTuple)
('one', 2, [3])
如果你想解压你的元组,你可以使用 *args。
您的方法定义如下:
def func(*tup):
for i in tup:
print(print "i = ",i)
现在调用你的方法:
tup = ('a1','a1',4,'something-else')
func(*tup)
这将产生输出为-
i = a1
i = a2
i = 4
i = something-else
我想将元组(或列表)作为值(参数)序列传递给函数。然后应该将元组作为参数解压缩到 *arg.
例如,这是明确的:
def func(*args):
for i in args:
print "i = ", i
func('a', 'b', 3, 'something')
但我想做的是:
tup = ('a1', 'a2', 4, 'something-else')
func(tup)
这应该与第一种情况类似。 我想我应该在这里使用 reprint 和 eval 但不确定具体如何。
我知道我可以在函数中传递元组,然后在函数体内解包,但我的问题是如何在函数调用本身中解包。
调用函数时直接使用func(*tup)
解压元组即可。
>>> func(*tup)
i = a1
i = a2
i = 4
i = something-else
这相当于 func(tup[0], tup[1], tup[2], ...)
。如果函数需要多个单独的参数,同样适用:
>>> def func2(a, b, c, d):
... print(a, b, c, d)
...
>>> func2(*tup)
('a1', 'a2', 4, 'something-else')
参见例如here 了解更深入的语法背景知识。
您可以在调用期间通过在元组标识符前放置 *
来解压缩元组。这使您可以轻松区分应该解包的元组和不应该解包的元组。这是一个例子:
>>> MyTuple = ('one', 2, [3])
>>>
>>> def func(*args):
... for arg in args:
... print(arg)
...
>>>
>>> func(*MyTuple)
one
2
[3]
>>>
>>> func(MyTuple)
('one', 2, [3])
如果你想解压你的元组,你可以使用 *args。 您的方法定义如下:
def func(*tup):
for i in tup:
print(print "i = ",i)
现在调用你的方法:
tup = ('a1','a1',4,'something-else')
func(*tup)
这将产生输出为-
i = a1
i = a2
i = 4
i = something-else