Python,元组参数与其他参数的兼容性

4 投票
6 回答
3052 浏览
提问于 2025-04-16 14:36

举个例子:

mytuple = ("Hello","World")
def printstuff(one,two,three):
    print one,two,three

printstuff(mytuple," How are you")

这自然会因为类型错误而崩溃,因为我只给了它两个参数,但它其实需要三个。

有没有简单的方法可以更整洁地“拆分”一个元组,而不是把所有内容都展开?比如:

printstuff(mytuple[0],mytuple[1]," How are you")

6 个回答

3

试试下面这个:

printstuff(*(mytuple[0:2]+(" how are you",)))
6

嗯,基本上你可以这样做:

>>> def fun(a, b, c):
...     print(a, b, c)
...
>>> fun(*(1, 2), 3)
  File "<stdin>", line 1
SyntaxError: only named arguments may follow *expression
>>> fun(*(1, 2), c=3)
1 2 3

如你所见,只要你在后面的参数前加上它的名字,你几乎可以做任何你想做的事情。

4

这不能不改变参数的顺序或者改用命名参数。

下面是使用命名参数的替代方法。

printstuff( *mytuple, three=" How are you" )

下面是改变参数顺序的替代方法。

def printstuff( three, one, two ):
    print one, two, three

printstuff( " How are you", *mytuple )

这可能会很糟糕。

撰写回答