1. 程式人生 > >python之函式的返回值【進階篇】

python之函式的返回值【進階篇】

返回值簡介

  • 簡單介紹 print 和 return 的區別,print 僅僅是列印在控制檯,而 return 則是將 return 後面的部分作為返回值作為函式的輸出,可以用變數接走,繼續使用該返回值做其它事。
  • 函式需要先定義後呼叫,函式體中 return 語句的結果就是返回值。如果一個函式沒有 reutrn 語句,其實它有一個隱含的 return 語句,返回值是 None,型別也是 'NoneType'。
  • return 語句的作用:結束函式呼叫、返回值

指定返回值與隱含返回值

  • 函式體中 return 語句有指定返回值時返回的就是其值

  • 函式體中沒有 return 語句時,函式執行結束會隱含返回一個 None 作為返回值,型別是 NoneType,與 return 、return None 等效,都是返回 None。

指定 return 返回值函式舉例: 

123456789101112def showplus(x):print(x)return + 1num = showplus(6)add = num + 2print(add)輸出結果:69

隱含 return None 舉例:

1234567891011def showplus(x):print(x)num = showplus(6)print(num)print(type(num))輸出結果:6None<class 'NoneType'>

return 語句位置與多條 return 語句

  • python 函式使用 return 語句返回 "返回值",可以將其賦給其它變數作其它的用處;

  • 所有函式都有返回值,如果沒有 return 語句,會隱式地呼叫 return None 作為返回值;

  • 一個函式可以存在多條 return 語句,但只有一條可以被執行,如果沒有一條 reutrn 語句被執行,同樣會隱式呼叫 return None 作為返回值;

  • 如果有必要,可以顯式呼叫 return None 明確返回一個None(空值物件)作為返回值,可以簡寫為 return,不過 python 中懶惰即美德,所以一般能不寫就不寫;

  • 如果函式執行了 return 語句,函式會立刻返回,結束呼叫,return 之後的其它語句都不會被執行了

舉例 :

 1 def showplus(x):
 2     print
(x) 3 return x + 1 4 print(x + 1) #該語句會執行麼 5 6 print(showplus(6)) 7 8 9 輸出結果: 10 6 11 7

返回值型別

  • 無論定義的是返回什麼型別,return 只能返回單值,但值可以存在多個元素;

  • return [1,3,5] 是指返回一個列表,是一個列表物件,1,3,5 分別是這個列表的元素;

  • return 1,3,5 看似返回多個值,隱式地被Python封裝成了一個元祖返回

舉例 :

def showlist():
    return [1,3,5]   #多元素,返回的是什麼型別

print(type(showlist()))
print(showlist())


輸出結果:
<class 'list'>
[1, 3, 5]    #列表型別

舉例 :

def showlist():
    return 2,4,6   #多值時,不指定型別

print(type(showlist()))
print(showlist())


輸出結果:
<class 'tuple'>    #預設封裝成元祖型別

函式巢狀

  • 函式有可見範圍(內外可見關係),這就是作用域的概念;

  • 內部函式不能被外部直接呼叫,會拋異常 NameError。

舉例 :

def outer():
    def inner():  #可以理解為內部函式
        print("inner")  
    print("outer")
outer()


輸出結果:
outer
此時如果呼叫 outer(),只會執行 print("outer"),因為 inner 雖然在 outer 函式內,但它也是一個函式,函式如果要呼叫,就必須用 '函式名()' 方式。

舉例 :

def outer():
    def inner():
        print("inner")
    print("outer")
    inner()

outer()

輸出結果:
outer
inner

【完】