Python 速查手冊

5.2 回傳值

回傳值 (return value) 是函數 (function) 或方法 (method) 回傳給呼叫方的數值,基本上是利用關鍵字 (keyword) return 回傳。

沒有用 return 回傳數值的函數,預設回傳 None ,如此例函數 f1() 回傳 NoneNone 就是表示什麼都沒有的物件 (object)

def f1():
    pass

a = f1()
print(a)
print(type(a))

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:returnvalue01.py
# 功能:示範回傳值定義
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 returnvalue01.py
None
<class 'NoneType'>
$

函數或方法可以回傳任意型態的物件,此例函數 f2() 回傳的是計算結果,也就是 1100 所有正整數的總和

def f2():
    i = 1
    sum = 0
    while i <= 100:
        sum += i
        i += 1
    return sum

a = f2()
print(a)
print(type(a))

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:returnvalue02.py
# 功能:示範回傳值定義
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 returnvalue02.py
5050
<class 'int'>
$

函數依需要可以回傳不同的數值,此例函數 f3() 有兩個 return 陳述,由 if 後的條件判斷執行哪一個 return 陳述,由於條件 (condition) 為真,因此會執行 return 10 ,所以只要呼叫 f3()else 的部分,也就是 return "hello" 永遠不會執行

def f3():
    if 1:
        return 10
    else:
        return "hello"

a = f3()
print(a)
print(type(a))

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:returnvalue03.py
# 功能:示範回傳值定義
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 returnvalue03.py
10
<class 'int'>
$

函數預設只能回傳一個數值,但 return 後可用逗號接多個數值,此時回傳單一數值的型態為序對 (tuple) ,因此可由序對取出以逗號間隔的每個數值

def f4():
    return 10, "hello"

a = f4()
b, c = f4()
print(a)
print(type(a))
print(b)
print(type(b))
print(c)
print(type(c))

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:returnvalue04.py
# 功能:示範回傳值定義
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 returnvalue04.py
(10, 'hello')
<class 'tuple'>
10
<class 'int'>
hello
<class 'str'>
$

函數中也可以定義函數,如此例函數 f5() 中定義了函數 f6() ,並且回傳 f6() ,由於變數 f7 接收函數 f5() 的回傳值,因此變數 f7 會變成函數型態,換言之, f7 會變成函數 f6()

def f5():
    print("f5")

    def f6():
        print("f6")
    
    return f6

f7 = f5()
f7()


#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:returnvalue05.py
# 功能:示範回傳值定義
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 returnvalue05.py
f5
f6
$

上一頁: 5.1 參數
Python 速查手冊 - 目錄
下一頁: 5.3 裝飾子
回 Python 教材首頁