Python使用带有默认参数的* args

时间:2014-12-06 03:20:11

标签: python

Python newb here。假设你有一个像

这样的函数
def myfunc(a = "apple", *args):
    print(a)
    for b in args:
        print(b + "!")

如何在不改变默认参数的情况下将一组未命名的参数传递给* args?

我想做的是

myfunc(,"banana", "orange")

并获取输出

apple
banana!
orange!

但这不起作用。

(我确定之前已经讨论过了,但我所有的搜索都是空的)

1 个答案:

答案 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 + "!"