1. 程式人生 > >python 中的參數順序

python 中的參數順序

位置 num 使用 bsp pre mark 關鍵字 pan word

一 python 中參數自定義分類


為了方便本文描述,將參數自定義為如下類型 【自定義 自定義 自定義 別糾結】

  • 形參:

    • 位置參數

    • 默認參數

    • 位置不定長

    • 關鍵字不定長

  • 實參:

    • 位置實參

    • 關鍵字實參

二、位置參數使用


  def fn(a, b):
pass
  • a 和 b 為位置參數 形式的形參

  • 調用時:

    • 全部位置實參:

      • 要求必須要 一 一對應

      • 要求實參與形參數量必須對等

      • fn( 1, 2 )

    • 全部關鍵字實參:

      • 要求實參數量與形參需要對等

      • 因為使用了關鍵字指定,順序可以自定義

      • fn(b=3, a=4)

    • 位置+關鍵字實參:

      • 要求數量對等

      • 此時位置參數必須寫在關鍵字的前面

      • fn(1, b=4)

三、默認參數使用


 def fn(a, b, c=3):
pass
  • a b 是位置的形參, c 是默認參數

  • 定義時:

    • 默認參數必須放置於位置參數後面,因為默認參數後只能放默認

  • 調用時:

    • 全部位置參數無默認值:

      • 此時遵守位置參數規則即可,數量對等, 一 一對應

      • 默認值參數走默認

      • fn(1,3)

    • 全部位置參數有默認值

      • 此時遵守位置參數必須先於關鍵字實參

      • fn(1,3,c=6) || fn(1, 3, 6)

    • 全部關鍵字參數無默認值

      • 此時遵守關鍵字參數規則,數量對等,可自定義順序

      • 默認值參數走默認

      • fn(b=4, a=4)

    • 全部關鍵字參數有默認值

      • 此時遵守關鍵字參數規則,數量對等,可自定義順序

      • 此時默認值只能通過關鍵字傳入

      • fn(b=6, c=4, a=1)

四、位置不定長 + 關鍵字不定長


不定長指的是實參數 個數不確定,希望函數可以接收用戶自義數量的實參

01 位置不定長**

  • 定義時

    • 函數定義時 設置 *args 形參,變量名可自定義

  • 調用時

    • 傳入一定數量的位置參數

    • 此時會自動的生成元組 args ,存放所有的位置參數值

02 關鍵字不定長

  • 定義時

    • 函數定義時 設置 **kwargs 形參,變量名可自定義

  • 調用時

    • 傳入一定數量的關鍵字實參

    • 自動生成字典存放關鍵字實參

五、參數位置及順序總結


上述不同形式的形式可同時出現,調用時 實參需要滿足對應的規律

01 定義時

  • 如果只有位置+默認, 那麽默認一定放置於位置之後

  • 如果位置不定長 + 默認,建議將默認放置於位置不定長前

  •  def fn(default=3, *args):
    pass
    # 此時雖然 *args 可以放置在 default 的前面,但是調用時容易出錯
    ?
  • 如果位置不定長 + 關鍵字不定長 + 默認同時存在,建議如下

  •  def fn(default=3, *args, **kwargs):
    pass
    ?
    # 此時 default 必須在 **kwargs 的前面,不然無法區分哪個是默認形參
    ?

02 調用時

如果定義時的順序敲定了,調用時實參按著形參的規則來走就可以

python 中的參數順序