Python 3.1 快速導覽 - 函數 回傳值

函數 (function) 可以有回傳值 (return value) ,回傳值可以是函數最後的計算結果。沒有回傳值的函數,呼叫 (call) 該函數會自動回傳 None 物件 (object) ,例如

def fun():
    i = 0
    while i < 6:
        #print(i)
        i += 1

a = fun()
print(a)
print(type(a))

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:def04.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



這裡,我們將 fun() 中呼叫 print() 的第 4 行註解化,使其不會發生作用,然後第 7 行以變數 (variable) a 取得 fun() 的回傳值
a = fun()


然後第 8 行印出 a
print(a)


結果得到 None ,就是 None 物件。第九行印出 a 的型態種類
print(type(a))


'NoneType' 就是 None 物件的型態名稱。


有回傳值的函數是在函數定義中加入 return 陳述 (return statement) ,通常是放在函數的最後面,形式如下
def function_name():
    pass
    
    return something


下面的 sum() 函數,計算 1 到 100 的總和
def sum():
    i = 1
    sum = 0
    while i <= 100:
        sum += i
        i += 1
    return sum    

a = sum()
print(a)
print(type(a))

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:def05.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



sum 為整數型態 (integral type) ,也就是 'int' 型態,因此回傳的是整數值 (integer value) 。


函數定義中沒有限制 retrun 陳述的數量,可依需要自行設置,如
def other():
    if 1:
        return 10
    else:
        return "hello"

a = other()
print(a)
print(type(a))

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:def06.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



函數定義中也沒有限制回傳值的數量,可在 retrun 陳述中以逗號分隔回傳值,例如
def test():
    return 10, "hello"

a , b = test()
print(a)
print(b)
print(type(a))
print(type(b))

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:def07.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



中英文術語對照
函數function
回傳值return value
呼叫call
物件object
變數variable
return 陳述return statement
整數型態integral type
整數值integer value






沒有留言: