2012-06-01 17 views
1
args = [4,5] 
kwargs = {'x': 7} 
func(a, b=2, *args, **kwargs) 

提及a,b,args和kwargs的公認命名法是什麼?用於Python函數參數的命名法

特別是,在這裏填寫空白:

'a' is a (_blank_) positional argument 
'args' contains (_blank_) positional arguments 
'b' is a (_blank_) keyword argument 
'kwargs' contains (_blank_) keyword arguments 

我正在尋找類似空白)= {正規/任意長度/實際/可變位置/固定}

如果我在上面的錯誤,也請糾正我。

+5

我不知道你要在這裏拍攝什麼語義,但如果更換'blank'用,那麼,空 - 即沒有 - 那麼你所有的句子似乎正確的是。例如:''a'是一個位置參數.' –

+0

@mark:你是否試圖闡明'形參'和'函數參數'之間的區別? –

+0

我想消除關於函數參數的討論。例如,如果'b'應該是3而不是2,那麼有人會告訴我什麼? 「嘿,你的關鍵字參數不正確」對我來說聽起來很模糊。 – mark

回答

1

您正在尋找的許多東西都可以在the Python Tutorial中找到。

從左至右依次爲:

  • a是一個位置參數。
  • b=3是一個缺省值爲3的位置參數。
  • *args是一個任意參數列表,解壓縮爲一個元組。
  • **kwargs是一個關鍵字參數,解壓縮爲字典。
1

正如Edward Loper已經描述的那樣,您的條款是正確的。你只能更具體:

  1. 「一」是第一需要位置參數。
  2. 'args'通行證非法位置參數。 (你知道,因爲你關鍵字參數後使用。)
  3. 「B」是可選關鍵字參數...命名b ...用2
  4. 「kwargs」的默認值經過任意關鍵字參數。

    def punk(a, b, *args, **kwargs): 
        print a 
        print b 
        print args 
        print kwargs 
    
    a=1; b=2; args = [4,5]; kwargs={'x':7} 
    punk(a, b=b, *args, **kwargs) 
    Traceback (most recent call last): 
        File "<stdin>", line 1, in <module> 
    TypeError: punk() got multiple values for keyword argument 'b' 
    

如果使用args合法的,你可以說,這是用來傳遞可能需要的和任意位置參數。

>>> punk(a, *args) 
1 
4 
(5,) 
{}