剛剛我們就寫了乙個函式,這個函式可以幫助我們計算字串的長度,並且把結果列印出來。但是,這和我們的len方法還不是太一樣。**不一樣呢?以前我們呼叫len方法會得到乙個值,我們必須用乙個變數來接收這個值。
str_len = len('hello,world')
這個str_len就是『hello,world』的長度。那我們自己寫的函式能做到這一點麼?我們也來試一下。
函式呼叫的結果
#函式定義def mylen():
"""計算s1的長度
"""s1 = "
hello world
"length = 0
for i in
s1: length = length+1
print(length)
#函式呼叫
str_len =mylen()
print(
'str_len : %s
'%str_len)
很遺憾,如果你執行這段**,得到的str_len 值為none,這說明我們這段**什麼也沒有給你返回。
那如何讓它也想len函式一樣返回值呢?
#函式定義def mylen():
"""計算s1的長度
"""s1 = "
hello world
"length = 0
for i in
s1: length = length+1
return
length
#函式呼叫
str_len =mylen()
print(
'str_len : %s
'%str_len)
我們只需要在函式的最後加上乙個return,return後面寫上你要返回的值就可以了。
接下來,我們就來研究一下這個return的用法。
return關鍵字的作用
return 是乙個關鍵字,在pycharm裡,你會看到它變成藍色了。你必須一字不差的把這個單詞給背下來。
這個詞翻譯過來就是「返回」,所以我們管寫在return後面的值叫「返回值」
要研究返回值,我們還要知道返回值有幾種情況:分別是沒有返回值、返回乙個值、返回多個值
沒有返回值
不寫return的情況下,會預設返回乙個none:我們寫的第乙個函式,就沒有寫return,這就是沒有返回值的一種情況。
不寫return
#函式定義def mylen():
"""計算s1的長度
"""s1 = "
hello world
"length = 0
for i in
s1: length = length+1
print(length)
#函式呼叫
str_len =mylen()
#因為沒有返回值,此時的str_len為none
print(
'str_len : %s
'%str_len)
只寫return,後面不寫其他內容,也會返回none,有的同學會奇怪,既然沒有要返回的值,完全可以不寫return,為什麼還要寫個return呢?這裡我們要說一下return的其他用法,就是一旦遇到return,結束整個函式。
只寫return
def ret_demo():print(
111)
return
print(
222)
ret =ret_demo()
print(ret)
return none:和上面的兩種情況一樣,我們一般不這樣寫。
def ret_demo():print(
111)
return
none
print(
222)
ret =ret_demo()
print(ret)
返回乙個值
剛剛我們已經寫過乙個返回乙個值的情況,只需在return後面寫上要返回的內容即可。
#函式定義def mylen():
"""計算s1的長度
"""s1 = "
hello world
"length = 0
for i in
s1: length = length+1
return
length
#函式呼叫
str_len =mylen()
print(
'str_len : %s
'%str_len)
注意:return和返回值之間要有空格,可以返回任意資料型別的值
返回多個值
可以返回任意多個、任意資料型別的值
def ret_demo1():'''返回多個值
'''return
1,2,3,4
def ret_demo2():
'''返回多個任意型別的值
'''return
1,['
a','
b'],3,4
ret1 =ret_demo1()
print(ret1)
ret2 =ret_demo2()
print(ret2)
返回的多個值會被組織成元組被返回,也可以用多個值來接收
def ret_demo2():return
1,['
a','
b'],3,4
#返回多個值,用乙個變數接收
ret2 =ret_demo2()
print(ret2)
#返回多個值,用多個變數接收
a,b,c,d =ret_demo2()
print(a,b,c,d)
#用多個值接收返回值:返回幾個值,就用幾個變數接收
a,b,c,d =ret_demo2()
print(a,b,c,d)
原因:
>>> 1,2#python中把用逗號分割的多個值就認為是乙個元組。
(1, 2
)>>> 1,2,3,4
(1, 2, 3, 4
)>>> (1,2,3,4)(
1, 2, 3, 4)
#序列解壓一>>> a,b,c,d = (1,2,3,4
)>>>a
1>>>b
2>>>c
3>>>d
4#序列解壓二
>>> a,_,_,d=(1,2,3,4
)>>>a
1>>>d
4>>> a,*_=(1,2,3,4
)>>> *_,d=(1,2,3,4
)>>>a
1>>>d
4#也適用於字串、列表、字典、集合
>>> a,b =
>>>a
'name
'>>>b
'age
'
主函式的返回值返回給誰 主函式返回值
responsebody報406 原因是 要返回的物件沒有setget方法sdfsdf 自定義視 析器和缺省視 析器需同時使用才好用 如果以redireci或forward字首,那麼 走缺省視 析器 return redirect index.jsp return forward index 需寫全...
函式返回值
這裡接著探求被調函式的返回值是如何傳遞到主調函式中的,下面為c程式。add函式通過直接返回a b的,而add1函式先定義乙個區域性變數c,儲存a b的值,然後再返回c的值。其中a b可以當成乙個臨時變數,其結果是暫時存放在暫存器中的 eax 參照反匯程式設計序,可以看出函式的值並不是通過壓棧 基址定...
函式返回值
一般說來,函式中是可以進行區域性變數的返回的,不然豈不是全部要用全域性變數,如果使用了全域性變數,那還有必要進行返回嗎?那函式就沒有它存在的意義了!但是要注意了,這裡所謂的區域性變數的返回很有內涵,什麼樣的值才可以進行返回而不出錯?其實,只要遵守一句話即可 函式不能返回指向棧記憶體的指標!為什麼?因...