![](../../img/interpret.jpg)
Python 簡易手冊
單元 45 - 位置引數與關鍵字引數
函數 (function) 呼叫 (call) 預設是依參數列 (parameter list) 中參數 (parameter) 的位置,一個一個放入要代入的值,這就是位置引數 (positional argument) ,但是也有個彈性,呼叫的時候可以在小括弧中用參數加上等號直接設定參數值,這叫做關鍵字引數 (keyword argument) ,舉例如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 定義函數 def do_something(a, b, c, d): # 印出參數 print(a, end=", ") print(b, end=", ") print(c, end=", ") print(d, end=", ") print() # 呼叫函數 do_something(1, 2, 3, 4) # 使用關鍵字引數呼叫 do_something(b=1, c=2, a=3, d=4) # 檔名: def_demo4.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 3 月 |
單元 44 - 函數與 return 陳述介紹如何定義函數。
第 11 行用預設的位置引數呼叫
10 11 | # 呼叫函數 do_something(1, 2, 3, 4) |
第 13 行改用關鍵字引數呼叫
12 13 | # 使用關鍵字引數呼叫 do_something(b=1, c=2, a=3, d=4) |
此例執行結果如下
> python def_demo4.py |
1, 2, 3, 4, 3, 1, 2, 4, |
> |
不過要注意,使用關鍵字引數呼叫之後,後面就不能再用位置引數,例如以下是合法的呼叫方式
| do_something(1, 2, d=3, c=4) |
以下的呼叫方式就會出錯
| do_something(1, 2, c=3, 4) |
定義函數時可以在參數列利用斜線、星號限制呼叫方式,斜線之前的參數只能用位置引數,星號之後只能用關鍵字引數,另舉一例如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # 定義函數 def do_something(a, /, b, c, *, d): # 印出參數 print(a, end=", ") print(b, end=", ") print(c, end=", ") print(d, end=", ") print() # 呼叫函數 do_something(1, d=2, b=3, c=4) # 檔名: def_demo6.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 3 月 |
這裡參數 a 在斜線之前,參數 d 則是在星號之後
2
| def do_something(a, /, b, c, *, d): |
雖然在斜線及星號中間的參數是兩種呼叫方式皆可,但是在這個例子中,由於先用關鍵字引數呼叫 d ,因此後面就只能用繼續用關鍵字引數呼叫
11
| do_something(1, d=2, b=3, c=4) |
此例執行結果如下
> python def_demo6.py |
1, 3, 4, 2, |
> |
參考資料
![](../../img/pydoing.gif)