Python中return返回值的簡單用法

2020-08-11 23:48:25

經常會遇到有人問「爲什麼方法的最後一行,有的要return一個結果,但是有的卻沒有return,學習的時候很少看到有書上講解這個return的用法,因此一直搞不清這個return是幹什麼用的?到底該什麼時候用,return的值應該怎麼確定?…"
下面 下麪我們就簡單的探討一下這個return的用法。
首先關於英文單詞return,它是返回的意思。那麼關於它將數據返回到哪兒去了,以及哪些數據需要返回?我們下面 下麪將舉幾個例子進行探討。

問題1:return將數據返回到哪兒去了?
我們先看下面 下麪這幾行程式碼,構造一個求和方法,然後方法結果執行結果print列印出來。

def sum_result(a, b):
    result = a + b

if __name__ == "__main__":
    print(sum_result(1, 2))

執行結果爲:

D:\Python\python.exe C:/Users/Desktop/Code/return.py
None

Process finished with exit code 0

發現print列印的結果爲None.
接下來我們在上述程式碼的基礎上再新增一行程式碼,爲

def sum_result(a, b):
    result = a + b
    return result

if __name__ == "__main__":
    print(sum_result(1, 2))

執行結果爲:

D:\Python\python.exe C:/Users/lc115/Desktop/Code/return.py
3

Process finished with exit code 0

啊哈,發現此時print列印的結果爲1+2的值(3)了,也即爲求和方法中result的運算結果。
通過上面兩個程式碼對比,我們發現當在方法中增加了return後,整個方法對外體現就是所return的值。以上例爲例,在方法sum_result中,增加了一條return result 程式碼後,sum_result方法對外體現的值即爲result,因此將方法sum_result print出來,結果是result的值。但是如果方法中沒有return 語句,則相當於是return None,沒有返回值,因此print 的結果爲None.
那是不是我們只能return方法中的運算結果呢?下面 下麪我們繼續探討一下。

問題2:我們return時應該return什麼值?以及應該什麼時候要用return?
下面 下麪我們再將上面的程式碼改一下,我們不return result,我們return一個自定義字串看是否可以。程式碼如下:

def sum_result(a, b):
    result = a + b
    return "hello"

if __name__ == "__main__":
    print(sum_result(1, 2))

執行結果:

D:\Python\python.exe C:/Users/Desktop/Code/return.py
hello

Process finished with exit code 0

發現輸出列印的是字串"hello"
我們再return一個布爾型別的值試試:

def sum_result(a, b):
    result = a + b
    return True

if __name__ == "__main__":
    print(sum_result(1, 2))

執行結果爲:

D:\Python\python.exe C:/Users/Desktop/Code/return.py
True
<class 'bool'>

Process finished with exit code 0

發現也可以直接return一個布爾型別的值。

其實return後面可以接任何值,可以與方法運算有關的,也可以跟方法運算無關的。當方法中一旦有return一個返回值,那麼該方法對外的整體」體現「就是該return的結果。因此我們在實際寫程式碼的過程中,是否需要return以及return什麼值還是需要根據具體的需求來看,比如有時候方法B需要用到方法A中的運算結果,那麼就需要將A方法的運算結果return,然後代入到B方法中去執行。例如:

def func_a():
    result = 1 + 2
    return result

def func_b():
    sum = func_a() + 3
    print(sum)

if __name__ == "__main__":
    func_b()

執行結果爲:

D:\Python\python.exe C:/Users/Desktop/Code/return.py
6

Process finished with exit code 0

問題3:在一個方法中,如果有多個值需要return該如何寫?
我們先來看一個例子,當有多個return語句時最終輸出是怎樣的?

def func_a():
    result = 1 + 2
    return result
    return True
    return 0

if __name__ == "__main__":
    print(func_a())

執行結果爲:

D:\Python\python.exe C:/Users/Desktop/Code/return.py
3

Process finished with exit code 0

發現無論寫多少return語句,最終只返回第一個return語句的結果。
那如果我們需要返回多個值,該怎麼寫呢?寫法如下:

def func_a():
    result = 1 + 2
    return result, True, 0, "hello"

if __name__ == "__main__":
    print(func_a())
    print(type(func_a()))
    print(func_a()[0])
    print(func_a()[1])
    print(func_a()[2])
    print(func_a()[3])

執行結果如下:

D:\Python\python.exe C:/Users/lc115/Code/return.py
(3, True, 0, 'hello')
<class 'tuple'>
3
True
0
hello

Process finished with exit code 0

我們發現將多個return結果一列寫出來,中間用英文逗號隔開後,輸出的結果是一個元組,如果需要單獨獲取某個值可以通過獲取元組元素的方法得到相應的值。

總結:
方法對外」體現「的數據就是return的值,方法中return的值可以是任意值,需要自己根據程式碼需求來給定。