在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
注意:默認參數的默認值在函數定義時確定,而不是每次調用時重新生成。如果默認參數是可變對象(如列表、字典),可能會出現“值被重複使用”的陷阱,但初學者暫時可以忽略(後續進階再深入)。
混合使用三種參數的規則¶
- 位置參數在前,關鍵字參數在後:例如
func(1, b=2)合法,func(b=2, 1)不合法。 - 默認參數必須在末尾:不能定義
def func(a=1, b)(會報錯),因爲有默認參數在無默認參數前面。
場景總結¶
- 位置參數:用於“必須傳遞的關鍵信息”(如函數核心邏輯需要的參數)。
- 關鍵字參數:用於“參數多且需要明確含義”的場景(如調用長參數函數時避免記混順序)。
- 默認參數:用於“大部分情況下用同一個值,偶爾需要修改”的可選參數(如設置函數的默認單位、默認值等)。
通過這三種參數的組合,你可以寫出更簡潔、更靈活的函數。多練習用不同參數調用函數,很快就能熟練掌握啦!