程序運(yùn)行到所遇到的第一個(gè)return即返回(退出def塊),不會(huì)再運(yùn)行第二個(gè)return。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),渾源企業(yè)網(wǎng)站建設(shè),渾源品牌網(wǎng)站建設(shè),網(wǎng)站定制,渾源網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,渾源網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
要返回兩個(gè)數(shù)值,寫成一行即可:
def?a(x,y):
if?x==y:
return?x,y
print?a(3,3)
python 函數(shù)返回值 return,函數(shù)中一定要有return返回值才是完整的函數(shù)。如果你沒有python 定義函數(shù)返回值,那么會(huì)得到一個(gè)結(jié)果是None對(duì)象,而None表示沒有任何值。
# 在學(xué)習(xí)python的朋友們,強(qiáng)烈推薦加入 Python QQ群。
函數(shù)中的return語(yǔ)句和print語(yǔ)句的區(qū)別
return是返回?cái)?shù)值的意思,比如定義兩個(gè)函數(shù),一個(gè)是有返回值,另一個(gè)用print語(yǔ)句,看看結(jié)果有什么不同。
def fnc1(x,y):
print x+y
當(dāng)函數(shù)沒有顯式return,默認(rèn)返回None值,你可以測(cè)試一下:
result = fnc1(2, 3)
result is None
True
另一個(gè)有返回值return的函數(shù)
def fnc2(x,y):
return x+y #python函數(shù)返回值
傳入?yún)?shù)后得到的結(jié)果不是None值,可以用同樣方法測(cè)式。
函數(shù)reversed不返回列表,而是返回一個(gè)迭代器??墒褂胠ist將返回的對(duì)象轉(zhuǎn)換為列表。 x = [1,2,3] number = reversed(x)# error number = list(reversed(x)) [3,2,1]
首先分兩種情況:
1.交互窗口處執(zhí)行:這個(gè)時(shí)候由于python的強(qiáng)制縮進(jìn),因此想要結(jié)束函數(shù)的定義只需要按兩下enter即可。
2.在.py文件中編寫,結(jié)束函數(shù)只需要不再縮進(jìn)即可
調(diào)用函數(shù)方法相同,把函數(shù)名及參數(shù)寫上就可以了,如果有返回值可以
r=functionA(var1)
附:測(cè)試代碼(python3運(yùn)行通過(guò))
#?-*-?coding:utf-8?-*-
#author:zfxcx
def?pt():
print("hello")
pt()
(1)unpack tuple和list, 可以讓函數(shù)返回多個(gè)值
def count():
return (1, 2, 3) # 或者 return [1, 2, 3]
# 把列表解包,把1 2 3 分別賦值給 a b c
a, b, c = count()
print a, b, c
# 輸出 1, 2, 3
(2)假設(shè)你知道Python的dict類型。Python中,在函數(shù)中定義一個(gè)變量的時(shí)候,會(huì)在一個(gè)隱藏的叫l(wèi)ocals的dict里面插入key-value,其中key是變量名,value是變量值。而引用一個(gè)變量的時(shí)候,則首先會(huì)在這個(gè)叫l(wèi)ocals的dict里面,根據(jù)變量名作為key,去查對(duì)應(yīng)的值。
var = 1 # 你可以認(rèn)為這里進(jìn)行了 locals['var'] = 1 的操作
print var # 在對(duì)var變量進(jìn)行求值的時(shí)候,就在locals['var']里面找var變量對(duì)應(yīng)的值
(3)for循環(huán)中,每次循環(huán)只是給 `i` 重新綁定值
for i in (1, 2, 3):
print i
print i
# 一次輸入 1 2 3 3
每次`for i in (1, 2, 3)`相當(dāng)于在`print i`之前,進(jìn)行了
`locals['i'] = 1`
`locals['i'] = 2`
`locals['i'] = 3`
的操作
所以最后的`print i`再去locals字典里面找`i`的時(shí)候,就變成 3 了。
(4)閉包是 一個(gè)函數(shù)加上這個(gè)函數(shù)引用的外部變量
var = 1
def f():
print var
# 這里的閉包是函數(shù) f 和 f 引用的外部變量 var
def count():
var2 = 2
def f():
print var2
# 這里的閉包是函數(shù) f 和 f 引用的外部變量 var2
return f
拿第一個(gè)函數(shù) f 來(lái)說(shuō)。在 f 運(yùn)行的時(shí)候,解釋器拿著'var'這個(gè)字符串去locals字典里面找,發(fā)現(xiàn)找不到,于是在closure字典里面找,最后closure字典里面找,你可以認(rèn)為就是找closure['var'],然后發(fā)現(xiàn)找到對(duì)應(yīng)的值。count里面的 f 函數(shù)同理。
(為了容易理解,我這里說(shuō)謊了。實(shí)際上 f 壓根沒有closure,count里面的 f 才有。其實(shí)closure壓根不是像locals那樣的字典)
(5)函數(shù)定義時(shí),函數(shù)只是記錄變量的名字。
要區(qū)分什么是名字,什么是值。
`i = 1`這里 i 只是名字,只是一個(gè)字符串 'i' 。這句話運(yùn)行完,locals['i'] = 1,就說(shuō) i 對(duì)應(yīng)的值是1
def count():
fs = []
for i in range(1, 4):
# 定義一個(gè)函數(shù),等價(jià)于運(yùn)行了 locals['f'] = 真正生成的函數(shù)
# 每次循環(huán),這里都會(huì)重新生成一個(gè)函數(shù),然后把重新生成的函數(shù)賦值給 locals['f']
def f():
return i * i # 引用了'i'這個(gè)名字,但并不是引用了'i'對(duì)應(yīng)的值
# 等價(jià)于 locals['fs'].append(locals['f'])
# f 不是函數(shù),它只是一個(gè)名字'f'。f 引用的東西,也就是locals['f']才是真正的函數(shù)
fs.append(f)
# 于是這個(gè)for循環(huán)生成了三個(gè)函數(shù),這三個(gè)函數(shù)是沒有名字的,這個(gè)函數(shù)運(yùn)行完后,它們跟'f'這個(gè)名字就毛關(guān)系都沒有了(是的我說(shuō)慌了,但可以先不管)
# 把整個(gè)列表返回,這個(gè)列表包含了三個(gè)函數(shù)
return fs
# count()返回三個(gè)函數(shù)的列表,unpack 列表的語(yǔ)法把列表中的三個(gè)函數(shù)抽出來(lái),重新給他們命名為 f1, f2, f3
# 也就是說(shuō),
# locals['f1'] = 列表中的第1個(gè)函數(shù)
# locals['f2'] = 列表中的第2個(gè)函數(shù)
# locals['f3'] = 列表中的第3個(gè)函數(shù)
# 這三個(gè)函數(shù)跟'f'這個(gè)名字現(xiàn)在毛關(guān)系都沒有。(其實(shí)是有的,但為了說(shuō)明需要簡(jiǎn)化,現(xiàn)在你可以完全不管括號(hào)里面說(shuō)的話)
f1, f2, f3 = count()
print f1(), f2(), f3()
# 好了我們運(yùn)行它們,輸入都是 9
# def f():
# return i * i
這是因?yàn)?f1 現(xiàn)在對(duì)應(yīng)的函數(shù),里面引用了 'i' 這個(gè)字符串,我們根據(jù) 'i '這個(gè)字符串去找它對(duì)應(yīng)的值,先找到 f 當(dāng)前的locals字典,發(fā)現(xiàn)沒有,因?yàn)楹瘮?shù)定義的時(shí)候沒有定義 i 變量。然后再去closure['i']里面找,因?yàn)镻ython是通過(guò)closure字典實(shí)現(xiàn)閉包的(就當(dāng)它是對(duì)的好不好),所以我們可以在closure['i']找到值,這個(gè)值就是我們上一次運(yùn)行的時(shí)候count函數(shù)里面殘留的locals['i'],而由于for循環(huán)三遍之后,locals['i'] == 3,所以找到 i 的值就是3。所以最后輸出都是9
用Pycharm的都知道,它有個(gè)跳轉(zhuǎn)的功能,可以讓我們?cè)谙肷钊肓私饽硞€(gè)函數(shù)/庫(kù)的時(shí)候,可以快速跳轉(zhuǎn)到具體的定義去。(推薦:pycharm教程)
方法就是:
按住command, 再用鼠標(biāo)左擊函數(shù)名/庫(kù)名;
當(dāng)我們跳轉(zhuǎn)過(guò)去,看到想要看到具體實(shí)現(xiàn)后,問題來(lái)了,怎樣跳回來(lái)?
直接在菜單欄點(diǎn)擊回退按鈕即可。
下面是找到跳轉(zhuǎn)按鈕的過(guò)程:
1、找到View下面的Toolbar并勾選上
2、按鈕出現(xiàn)
更多python知識(shí)請(qǐng)關(guān)注python視頻教程。