Python 傳回值

來源:互聯網
上載者:User

標籤:傳回值

本人水平有限,如有錯誤,還望指出,感謝!


本章詳細介紹 傳回值:

0x 00 傳回值簡介

0x 01 指定傳回值與隱含傳回值

0x 02 return 語句位置與多條 return 語句

0x 03 傳回值類型

0x 04 函數嵌套


0x 00 傳回值簡介


  • 回顧下,上一節簡單介紹了函數及其各種參數,其中也有簡單介紹 print 和 return 的區別,print 僅僅是列印在控制台,而 return 則是將 return 後面的部分作為傳回值作為函數的輸出,可以用變數接走,繼續使用該傳回值做其它事。


  • 函數需要先定義後調用,函數體中 return 語句的結果就是傳回值。如果一個函數沒有 reutrn 語句,其實它有一個隱含的 return 語句,傳回值是 None,類型也是 ‘NoneType‘。


  • return 語句的作用:

  • 結束函數調用、傳回值



0x 01 指定傳回值與隱含傳回值


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

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


指定 return 傳回值函數舉例:

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


隱含 return None 舉例:

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



0x 02 return 語句位置與多條 return 語句


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

  • 所有函數都有傳回值,如果沒有 return 語句,會隱式地調用 return None 作為傳回值

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

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

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


舉例 1:

def showplus(x):    print(x)    return x + 1    print(x + 1)  #該語句會執行麼print(showplus(6))輸出結果:67


舉例 2:

def showplus(x):    print(x)       # 5    return x + 1   # 6    return x + 2   # 該語句也不會被執行print(showplus(5))輸出結果:56


舉例 3:

def guess(x):    if x > 3:        return "> 3"    else:        return "<= 3"print(guess(10))print(guess(2))輸出結果:> 3<= 3


舉例 4:

# for .. else .. 語句 (意外終止情況)

# 表示如果 for 語句段的內容正常迴圈結果才會執行 else 段的語句,如果 for 在迴圈過程中時被 break 或者 return 語句意外終止迴圈,就不會執行 else 段中的語句。

def fn(x):    for i in range(x):        if i > 4:            return i    else:        print("{} is not greater than 4".format(x))print(fn(3))print(fn(6))返回結果:3 is not greater than 4None5



0x 03 傳回值類型


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

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

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


舉例 1:

def fn():    return 3   #單值時,返回的是什麼類型    print(fn())print(type(fn()))輸出結果:3<class ‘int‘>    #int 整數類型



舉例 2:

def showlist():    return [1,3,5]   #多元素,返回的是什麼類型print(type(showlist()))print(showlist())輸出結果:<class ‘list‘>[1, 3, 5]    #清單類型

  

舉例 3:

def showlist():    return (2,4,6)   #多元素,返回的是什麼類型print(type(showlist()))print(showlist())輸出結果:<class ‘tuple‘>    #元祖類型(2, 4, 6)


舉例 4:

def showlist():    return 2,4,6   #多值時,不指定類型print(type(showlist()))print(showlist())輸出結果:<class ‘tuple‘>    #預設封裝成元祖類型

 

0x 04 函數嵌套


  • 函數有可見範圍(內外可見關係),這就是範圍的概念。

  • 內建函式不能被外部直接調用,會拋異常 NameError。


舉例 1:

def outer():    def inner():  #可以理解為內建函式        print("inner")      print("outer")outer()輸出結果:outer


此時如果調用 outer(),只會執行 print("outer"),因為 inner 雖然在 outer 函數內,但它也是一個函數,函數如果要調用,就必須用 ‘函數名()‘ 方式。


舉例 2:

def outer():    def inner():        print("inner")    print("outer")inner()   #外部無法引用內建函式,內建函式只在本地範圍有效輸出結果,拋出異常:Traceback (most recent call last):  File "C:/python/return_value.py", line 6, in <module>    inner()NameError: name ‘inner‘ is not defined


舉例 3:

def outer():    def inner():        print("inner")    print("outer")    inner()outer()輸出結果:outerinner



總結:


此節介紹了函數的傳回值、傳回值的作用,指定與不指定傳回值時的不同,傳回值類型,以及函數嵌套時傳回值的使用。


Python 傳回值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.