Python 簡易手冊

單元 44 - 函數與 return 陳述

函數 (function) 是一組可重複執行的程式碼,藉由呼叫 (call) 然後選擇性提供引數 (argument) 進行計算,也可以選擇性回傳計算結果。函數用關鍵字 (keyword) def 定義,舉例如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 定義函數
def do_something():
    # 印出訊息
    print("What?")

# 呼叫函數
do_something()

# 檔名: def_demo.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

關鍵字 def 後面空一格,然後接上函數識別字 (identifier) do_something ,函數識別字之後要接上小括弧 () ,小括弧裡頭放的是參數列 (parameter list) ,這裡留空,表示沒有參數 (parameter) ,最後要加上冒號 : ,底下縮排部分就是函數所要執行的工作,這裡只有在命令列印出訊息,注意這個函數並沒有回傳值 (return value) 。

第 7 行簡單呼叫函數 do_somehting() ,呼叫函數要把函數識別字跟最後小括弧打出來,此例執行結果如下

> python def_demo.py
What?
>

參數列可以提供多個參數,每個參數以逗號分隔,例如

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 定義函數
def do_something(p1, p2):
    # 印出參數
    print(p1 + p2)

# 呼叫函數印出引數
do_something("Hello", "Python")

# 檔名: def_demo2.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

這裡 do_something 之後的小括弧中有兩個參數 p1p2 ,函數工作則是印出兩個參數的相加值。下面呼叫函數就需要提供兩個引數,也就是定義幾個參數,呼叫的時候就要提供幾個引數,這裡兩個引數都是字串 (string) ,因此會印出相連字串,此例執行結果如下

> python def_demo2.py
HelloPython
>

就英文原文的術語而言,函數在參數列定義的識別字叫做參數,稱作 formal parameter ,實際呼叫的時候提供的值叫做引數,稱作 actual argument

單元 33 - 字串介紹如何定義字串,單元 12 - 算術運算子介紹算術運算子 (arithmetic operator) 的用法。

如果函數定義回傳值,就需要在函數工作最後加上 return 陳述 (statement) ,例如

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 定義函數
def do_something(p1, p2):
    # 回傳值
    return p1 + p2

# 呼叫函數
r = do_something("Hello", "Python")
# 印出回傳值
print(r)

# 檔名: def_demo3.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

此例在函數工作區的最後加上了 return 陳述,因此 do_somehting() 函數會回傳兩個參數的相加值,底下第 7 行則是以變數 (variable) r 接收 do_something() 的回傳值,然後第 9 行印出變數 r

 6
 7
 8
 9
# 呼叫函數
r = do_something("Hello", "Python")
# 印出回傳值
print(r)

執行結果如下

> python def_demo3.py
HelloPython
>

不過要注意,函數只有一個回傳值,雖然可以用逗號來回傳多個值,像是

  
  
  
  
# 定義函數
def do_something(p1, p2):
    # 回傳值
    return p1, p2

接收端也可以加上逗號以多個變數來取得回傳值,例如

  
  
# 呼叫函數
r1, r2 = do_something("Hello", "Python")

但是實際上這是序對 (tuple) ,回傳是序對,接收端也是序對,序對並沒有強制一定要加小括弧,因此以下

  
  
# 呼叫函數
r = do_something("Hello", "Python")

變數 r 的型態就是序對。

單元 38 - 序對與 Range介紹如何定義序對。

以上簡略地介紹如何定義函數,接下來幾個單元會繼續深入討論函數

參考資料

上一頁 單元 43 - 綜合運算
回 Python 簡易手冊 首頁
下一頁 單元 45 - 位置引數與關鍵字引數
回 Python 教材首頁
回程式語言教材首頁