Python,元组参数与其他参数的兼容性
举个例子:
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 )
这可能会很糟糕。