2016-07-06 24 views
0

如何將* arg和變量與defaull值一起使用?在一個函數中使用* arg和可選參數

def my_fun(a, b = True, *arg): 
    print (a) 
    print (b) 
    print (arg) 

my_fun(1,2,3) 

我想要得到的是

1 
True 
(2,3,) 

我得到的是

1 
2 
(3) 
+2

http://xyproblem.info/ –

回答

6

如果趕上關鍵字參數之前的所有ARGS:

>>> def my_fun(*arg, a=1, b=2): 
...  print (a) 
...  print (b) 
...  print (arg) 
... 
>>> my_fun(3,4,5) 
1 
2 
(3, 4, 5) 

而且ab可以將它們作爲命名參數進行修改:

>>> my_fun(3,4,5, a=10, b=11) 
10 
11 
(3, 4, 5) 
1

什麼你問沒有意義。

如果我按照你的邏輯,不管你怎麼稱呼你的函數,ab始終將12

+0

我犯了一個錯誤,我想保持改變a和b變量的能力 – Demaunt

+0

這對我來說很清楚。顯示一個你調用該函數的例子,並且'a'不是'1'。 –

+0

改變了問題,一開始就犯錯誤。我想在「a」和「* arg」之間加上可選的參數。但不明白如何讓python定義哪些值屬於* arg,哪些是可選變量 – Demaunt

相關問題