函數參數:位置參數、關鍵字參數和默認參數入門

在Python中,函數就像一個可以接收不同“指令”的工具,而函數參數就是我們傳遞給工具的“信息”。合理使用不同類型的參數,能讓函數更靈活、更易用。今天我們就來學習最基礎也最常用的三種參數:位置參數、關鍵字參數和默認參數。

1. 位置參數(Positional Arguments)

位置參數是最基礎的參數類型,必須按照函數定義時的順序傳遞。想象你對朋友說“把10元錢和5元錢給我”,這裏“10元”和“5元”的順序不能顛倒,否則意思就變了。

定義函數時,參數按順序排列:

def add(a, b):  # a和b是位置參數
    return a + b

調用時,必須按順序傳遞對應的值:

result = add(3, 5)  # a=3,b=5,返回8
print(result)  # 輸出:8

注意:位置參數必須“不多不少”,少傳或多傳都會報錯。比如add(1)會提示“缺少b參數”,add(1, 2, 3)會提示“多餘參數”。

2. 關鍵字參數(Keyword Arguments)

關鍵字參數通過參數名=值的形式傳遞,順序可以顛倒,更直觀地表明參數含義。比如你對朋友說“請把價格是5元的東西和10元的東西給我”,用“價格=5元”和“價格=10元”明確表達,避免順序混淆。

調用函數時,用參數名=值傳遞:

def greet(name, message="你好"):  # name是位置參數,message是默認參數(後續講)
    print(f"{message}{name}!")

# 用關鍵字參數調用,順序可以顛倒
greet(name="小明", message="Hello")  # 輸出:Hello,小明!
greet(message="Hi", name="小紅")    # 輸出:Hi,小紅!

混合使用位置和關鍵字參數時,必須位置參數在前,關鍵字參數在後

greet("小剛", message="早安")  # 正確:位置參數在前,關鍵字參數在後
greet(message="早安", "小剛")  # 錯誤!會報錯“SyntaxError”

3. 默認參數(Default Arguments)

默認參數給參數一個“備用值”,調用時如果沒傳這個參數,就自動使用默認值。比如“計算圓面積”時,默認半徑是3,這樣不需要每次都傳半徑。

定義方式:在參數名後用=賦值默認值,且默認參數必須放在位置參數列表的末尾(否則會報錯):

def circle_area(radius=3):  # radius默認值爲3(必須在末尾)
    return 3.14 * radius ** 2

# 調用時可以不傳radius,用默認值
area1 = circle_area()  # 3.14 * 3² = 28.26
# 也可以傳新值覆蓋默認值
area2 = circle_area(5)  # 3.14 * 5² = 78.5

注意:默認參數的默認值在函數定義時確定,而不是每次調用時重新生成。如果默認參數是可變對象(如列表、字典),可能會出現“值被重複使用”的陷阱,但初學者暫時可以忽略(後續進階再深入)。

混合使用三種參數的規則

  1. 位置參數在前,關鍵字參數在後:例如func(1, b=2)合法,func(b=2, 1)不合法。
  2. 默認參數必須在末尾:不能定義def func(a=1, b)(會報錯),因爲有默認參數在無默認參數前面。

場景總結

  • 位置參數:用於“必須傳遞的關鍵信息”(如函數核心邏輯需要的參數)。
  • 關鍵字參數:用於“參數多且需要明確含義”的場景(如調用長參數函數時避免記混順序)。
  • 默認參數:用於“大部分情況下用同一個值,偶爾需要修改”的可選參數(如設置函數的默認單位、默認值等)。

通過這三種參數的組合,你可以寫出更簡潔、更靈活的函數。多練習用不同參數調用函數,很快就能熟練掌握啦!

小夜