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,
>

參考資料

上一頁 單元 44 - 函數與 return 陳述
回 Python 簡易手冊 首頁
下一頁 單元 46 - 預設引數
回 Python 教材首頁
回程式語言教材首頁