函式的返回值

2022-08-10 07:27:10 字數 3731 閱讀 7088

剛剛我們就寫了乙個函式,這個函式可以幫助我們計算字串的長度,並且把結果列印出來。但是,這和我們的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 參照反匯程式設計序,可以看出函式的值並不是通過壓棧 基址定...

函式返回值

一般說來,函式中是可以進行區域性變數的返回的,不然豈不是全部要用全域性變數,如果使用了全域性變數,那還有必要進行返回嗎?那函式就沒有它存在的意義了!但是要注意了,這裡所謂的區域性變數的返回很有內涵,什麼樣的值才可以進行返回而不出錯?其實,只要遵守一句話即可 函式不能返回指向棧記憶體的指標!為什麼?因...