20 Python 中的函式引數
在通常情況下,定義函式時,函式的引數個數是預先確定的。例如,編寫計算兩個數相加的函式 add(a, b),程式碼如下:
def add(a, b):
return a + b
sum = add(1, 2)
- 在第 1 行,定義了函式 add,函式有兩個引數,第 1 個引數是 a,第 2 個引數是 b
- 在第 2 行,計算引數 a 和 引數 b 的累加和,通過 return 語句將計算結果返回給呼叫者
- 在第 4 行,通過 add(1, 2) 呼叫函式 add
- 將整數 1 傳遞給第 1 個引數 a
- 將整數 2 傳遞給第 2 個引數 b
傳入的兩個整數按照位置順序依次賦給函式的引數 a 和 b,引數 a 和引數 b 被稱為位置引數。
在 Python 中,呼叫函式時,根據函式定義的引數位置來傳遞引數,要求傳遞的引數與函式定義的引數兩者一一對應,如果 “傳遞的引數個數” 不等於 “函式定義的引數個數”,執行時會報錯,例如:
def add(a, b):
return a + b
sum = add(1, 2, 3)
- 在第 1 行,定義了函式 add,函式有 2 個引數
- 在第 4 行,通過 add(1, 2, 3) 呼叫函式 add,傳遞了 3 個引數
因為 “傳遞的引數個數” 不等於 “函式定義的引數個數”,執行時報錯如下:
C:\> python add.py
Traceback (most recent call last):
File "error.py", line 4, in <module>
sum = add(1, 2, 3)
TypeError: add() takes 2 positional arguments but 3 were given
在第 5 行,執行時提示:函式 add 有 2 個位置引數,但是呼叫時傳遞了 3 個位置引數。
