比如learn python the hard way 裡的
def add(a, b): print "ADDING %d + %d" % (a, b) return a + b
回複內容:
請先看 @張曉峰 的答案。如果這個答案也看不懂——
首先要瞭解,函數是什嗎?
書上可能會說函數是完成功能的模組之類的話。其實說白了,函數就是個你招來的工人。
你給他一些材料,告訴他怎麼用這些材料拼裝,然後他負責把拼裝好的成品交給你。材料就是函數的參數,成品是函數的輸出,而怎麼拼裝就是你寫的函數體代碼了。
比如這段代碼
def worker(a, b, c): x = a + b y = x * c
return 語句就是將結果返回到調用的地方,並把程式控制權一起返回。
比如如果其他地方有一句
num = add(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 #返回一個Noneprint只是單純的將結構輸出至你的顯示裝置,再沒有其它任何意義。
舉個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”的目標。首先,你是在定義一個函數,使用它的時候要調用它
sum=add(3,4)
輸出
sum=7
可見,return把後面運算式的結果返回給了sum
重點是要明白 定義函數 然後 使用函數,這是兩個步驟。啊哈哈哈!我在知乎回答的第一道專業題!
返回你def的這個函數用中文“返回”兩字來解釋這個概念的,都TM在說廢話,人家問如何理解,你就把英文翻譯過來有意義麼