2014-12-06 82 views
2

python newb在這裏。假設你有一個像Python使用默認參數* args

def myfunc(a = "apple", *args): 
    print(a) 
    for b in args: 
     print(b + "!") 

功能如何傳遞一組未命名的參數爲* ARGS不改變默認參數?

我想要做的是

myfunc(,"banana", "orange") 

,並得到輸出

apple 
banana! 
orange! 

但這不起作用。

(我敢肯定,這之前已經討論過,但我所有的搜索想出空)

回答

2

在Python 3,你可以做到這一點通過改變akeyword 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 + "!"