Python newb here。假设你有一个像
这样的函数def myfunc(a = "apple", *args):
print(a)
for b in args:
print(b + "!")
如何在不改变默认参数的情况下将一组未命名的参数传递给* args?
我想做的是
myfunc(,"banana", "orange")
并获取输出
apple
banana!
orange!
但这不起作用。
(我确定之前已经讨论过了,但我所有的搜索都是空的)
答案 0 :(得分:2)
在Python 3中,您可以将a
更改为keyword only argument:
>>> def myfunc(*args, a="apple"):
print(a)
for b in args:
print(b + "!")
...
>>> myfunc("banana", "orange")
apple
banana!
orange!
>>> myfunc("banana", "orange", a="watermelon")
watermelon
banana!
orange!
在Python 2中,您必须执行以下操作:
>>> def myfunc(*args, **kwargs):
a = kwargs.pop('a', 'apple')
print a
for b in args:
print b + "!"