Python的return如何理解?

比如learn python the hard way 里的

def add(a, b):
print "ADDING %d + %d" % (a, b)
return a + b

這裡的return a + b執行了什麼操作?

return有什麼含義,如何使用?


請先看 @張曉峰 的答案。如果這個答案也看不懂——

首先要了解,函數是什麼?

書上可能會說函數是完成功能的模塊之類的話。其實說白了,函數就是個你招來的工人。

你給他一些材料,告訴他怎麼用這些材料拼裝,然後他負責把拼裝好的成品交給你。材料就是函數的參數,成品是函數的輸出,而怎麼拼裝就是你寫的函數體代碼了。

比如這段代碼

def worker(a, b, c):
x = a + b
y = x * c

這個工人(worker)在你的指導下,用a b c三個材料,裝配出了x和y兩個成品。

但是程序里的裝配和工廠不同,用過的材料不會消失。這樣,這個工人手裡就有了a b c x y五樣物品。他怎麼知道你要的是哪個呢?

所以return的作用就是,在這種時候告訴工人你到底想要什麼東西,是一個iPhone手機殼還是整台iPhone。例如

def worker(a, b, c):
x = a + b
y = x * c
return y

這樣工人就會把y交給你。當你讓這個工人幫你幹活(調用函數的時候)

result = worker(1, 2, 3)

你就會得到對應的結果((1+2)*3)。

這就是return的作用。


return 語句就是將結果返回到調用的地方,並把程序控制權一起返回。

比如如果其他地方有一句

num = add(a, b)

return 語句就是把 a + b 返回到 = 右邊,並把程序控制權交給這條賦值語句,執行賦值過程。


卧槽得到了1個贊!來修正下!

無意間看到這個好2的問題..寫一下我的粗淺見解..

1、函數(function)的功能是處理(process)參數(argument),從而得到一個返回值(return)

1.1、上一點也可以這麼理解,函數是工序,參數是原材料,返回值是成品。

回答問題:

「這裡的return a + b執行了什麼操作?」

顯然執行了a+b這個操作,並把a+b返回給這個叫add的函數,使a+b成為add函數的處理結果。

「return有什麼含義,如何使用?」

函數的幾個要素包括:函數名,參數,處理過程,返回結果(return),其中處理過程不必要,但其他三個是一定有的(但是return不一定要寫,在定義函數時可以不寫return,函數會默認返回None),對應你給的例子就是函數名add,參數a和b,返回結果a+b。return的含義你參考秋菊打官司:「俺就是要個說法(結果)嘛」或者參考函數的功能來理解。

至於如何使用,(以你的add函數為例)簡單的總結有以下幾點:

正常版:return a+b

手殘版:returna+b #報錯NameError

智障版:return a #只返回a

智障版2:return c+d #報錯NameError

任性版:return 2 #就是這麼2

任性版2:return a-b #你開心就好:)

空虛版:return #返回一個None


贊最多的回答看完以後還是一臉懵逼,後來在實際使用中終於明白了

def shuchu(x):

print x

這段代碼我們直接使用的時候沒有問題,比如shuchu(3)那麼也會列印出來3,但是如果我們需要把我們定義的函數輸出的結果與一個變數關聯的時候,例如

d=shuchu(3)

print d

我們會發現d的值是None

return的翻譯成漢語是返回,用return定義的函數會把得出的結果賦值給變數名

def shuchu(x):

return x

d=shuchu(3)

print d

我們會發現d的值已經是3了


好像被邀請了. 先佔個坑. 開始寫答案,一會寫好了粘過來.


啊哈哈哈!我在知乎回答的第一道專業題!

返回你def的這個函數


print只是單純的將結構輸出至你的顯示設備,再沒有其它任何意義。

舉個return的栗子:

def autoparts():

parts_dict={}

list_of_parts = open("list_of_parts.txt", "r")

for line in list_of_parts:

k, v = line.split()

parts_dict[k] = v

return parts_dict

為什麼return?如果你不return,那麼你建立的這個字典就掛了,在function運行完後其結果不可再被訪問,因為你僅僅是把結果print到輸出設備上。如果你return了這個結果,那麼結果會被保留,那麼你還可以在這個結果的基礎上做些其它事情,如:

my_auto_parts=autoparts()

print my_auto_parts["engine"]

當我們再調用autoparts這個function時,它將return的值給我們,我們可以把這個return的值儲存在my_auto_parts這個變數里,我們可以在autoparts這個function運行完後,依然通過my_auto_parts這個變數來獲取字典里的內容,最後我們可以輸出字典里關鍵詞「engine」的目標。


可把函數體開始到結束的語句看成是一次旅行計劃,參數是我們計劃攜帶去旅行的東西。如果沒有return語句,就意味著我們不帶回任何東西;如果有return語句,則意味著我們帶回來一些東西,比如一些旅遊照片、紀念品等(也可以直接帶回原來帶出去的東西)。此外,特別要注意return出現的位置,如果在函數體中間或開頭就出現return,則說明這次計劃並未(完全)實施,半途夭折了,return後續的語句不會執行。例如:

&>&>&> def f(a,b):
... return a
... a = a +b
... print a
&>&>&> x = f(1,2)
&>&>&> x
1

該函數f執行到"return a"就結束運行了,並沒有執行 "a = a+b; print a"。這個功能和循環體中的break有點像。


用中文「返回」兩字來解釋這個概念的,都TM在說廢話,人家問如何理解,你就把英文翻譯過來有意義么


@方興 的回答已經解釋得很清楚了

return的作用看黃色和綠色框框就好了


首先,你是在定義一個函數,使用它的時候要調用它

sum=add(3,4)

輸出

sum=7

可見,return把後面表達式的結果返回給了sum

重點是要明白 定義函數 然後 使用函數,這是兩個步驟。


推薦閱讀:

Python這麼熱,會不會很快出現市場飽和,比如五年內?
if __name__ == __main__ 如何正確理解?
怎樣用 Windows 入門Python?
Python 有哪些入門學習方法和值得推薦的經典教材?
如何學習Python,以及新手如何入門?

TAG:Python | 編程 | Python入門 |