Python 函數(shù)返回值的示例代碼
0x 00 返回值簡介
回顧下,上一節(jié)簡單介紹了函數(shù)及其各種參數(shù),其中也有簡單介紹 print 和 return 的區(qū)別,print 僅僅是打印在控制臺,而 return 則是將 return 后面的部分作為返回值作為函數(shù)的輸出,可以用變量接走,繼續(xù)使用該返回值做其它事。
函數(shù)需要先定義后調(diào)用,函數(shù)體中 return 語句的結(jié)果就是返回值。如果一個函數(shù)沒有 reutrn 語句,其實它有一個隱含的 return 語句,返回值是 None,類型也是 'NoneType'。
return 語句的作用:結(jié)束函數(shù)調(diào)用、返回值
0x 01 指定返回值與隱含返回值
函數(shù)體中 return 語句有指定返回值時返回的就是其值
函數(shù)體中沒有 return 語句時,函數(shù)運行結(jié)束會隱含返回一個 None 作為返回值,類型是 NoneType,與 return 、return None 等效,都是返回 None。
指定 return 返回值函數(shù)舉例:
def showplus(x): print(x) return x + 1 num = showplus(6) add = num + 2 print(add)
輸出結(jié)果:
6
9
隱含 return None 舉例:
def showplus(x): print(x) num = showplus(6) print(num) print(type(num))
輸出結(jié)果:
6
None
<class 'NoneType'>
0x 02 return 語句位置與多條 return 語句
python 函數(shù)使用 return 語句返回 "返回值",可以將其賦給其它變量作其它的用處
所有函數(shù)都有返回值,如果沒有 return 語句,會隱式地調(diào)用 return None 作為返回值
一個函數(shù)可以存在多條 return 語句,但只有一條可以被執(zhí)行,如果沒有一條 reutrn 語句被執(zhí)行,同樣會隱式調(diào)用 return None 作為返回值
如果有必要,可以顯式調(diào)用 return None 明確返回一個None(空值對象)作為返回值,可以簡寫為 return,不過 python 中懶惰即美德,所以一般能不寫就不寫
如果函數(shù)執(zhí)行了 return 語句,函數(shù)會立刻返回,結(jié)束調(diào)用,return 之后的其它語句都不會被執(zhí)行了
舉例 1:
def showplus(x): print(x) return x + 1 print(x + 1) #該語句會執(zhí)行么 print(showplus(6))
輸出結(jié)果:
6
7
舉例 2:
def showplus(x): print(x) # 5 return x + 1 # 6 return x + 2 # 該語句也不會被執(zhí)行 print(showplus(5))
輸出結(jié)果:
5
6
舉例 3:
def guess(x): if x > 3: return "> 3" else: return "<= 3" print(guess(10)) print(guess(2))
輸出結(jié)果:
> 3
<= 3
舉例 4:
# for .. else .. 語句 (意外終止情況) # 表示如果 for 語句段的內(nèi)容正常循環(huán)結(jié)果才會執(zhí)行 else 段的語句,如果 for 在循環(huán)過程中時被 break 或者 return 語句意外終止循環(huán),就不會執(zhí)行 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))
返回結(jié)果:
is not greater than 4
None
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()))
輸出結(jié)果:
<class 'int'> #int 整數(shù)類型
舉例 2:
def showlist(): return [1,3,5] #多元素,返回的是什么類型 print(type(showlist())) print(showlist())
輸出結(jié)果:
<class 'list'>
[1, 3, 5] #列表類型
舉例 3:
def showlist(): return (2,4,6) #多元素,返回的是什么類型 print(type(showlist())) print(showlist())
輸出結(jié)果:
<class 'tuple'> #元祖類型
(2, 4, 6)
舉例 4:
def showlist(): return 2,4,6 #多值時,不指定類型 print(type(showlist())) print(showlist())
輸出結(jié)果:
<class 'tuple'> #默認封裝成元祖類型
0x 04 函數(shù)嵌套
函數(shù)有可見范圍(內(nèi)外可見關(guān)系),這就是作用域的概念。
內(nèi)部函數(shù)不能被外部直接調(diào)用,會拋異常 NameError。
舉例 1:
def outer(): def inner(): #可以理解為內(nèi)部函數(shù) print("inner") print("outer") outer()
輸出結(jié)果:
outer
此時如果調(diào)用 outer(),只會執(zhí)行 print("outer"),因為 inner 雖然在 outer 函數(shù)內(nèi),但它也是一個函數(shù),函數(shù)如果要調(diào)用,就必須用 '函數(shù)名()' 方式。
舉例 2:
def outer(): def inner(): print("inner") print("outer") inner() #外部無法引用內(nèi)部函數(shù),內(nèi)部函數(shù)只在本地作用域有效
輸出結(jié)果,拋出異常:
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()
輸出結(jié)果:
outer
inner
總結(jié):
此節(jié)介紹了函數(shù)的返回值、返回值的作用,指定與不指定返回值時的不同,返回值類型,以及函數(shù)嵌套時返回值的使用。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python如何存儲和讀取ASCII碼形式的byte數(shù)據(jù)
這篇文章主要介紹了Python如何存儲和讀取ASCII碼形式的byte數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05python自動化測試之DDT數(shù)據(jù)驅(qū)動的實現(xiàn)代碼
這篇文章主要介紹了python自動化測試之DDT數(shù)據(jù)驅(qū)動的實現(xiàn)代碼,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07python xmind 包使用詳解(其中解決導(dǎo)出的xmind文件 xmind8可以打開 xmind2020及之后版本打
xmind8 可以打開xmind2020 報錯,如何解決這個問題呢?下面小編給大家?guī)砹藀ython xmind 包使用(其中解決導(dǎo)出的xmind文件 xmind8可以打開 xmind2020及之后版本打開報錯問題),感興趣的朋友一起看看吧2021-10-10pytorch深度神經(jīng)網(wǎng)絡(luò)入門準備自己的圖片數(shù)據(jù)
這篇文章主要為大家介紹了pytorch深度神經(jīng)網(wǎng)絡(luò)入門準備自己的圖片數(shù)據(jù)示例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06