在以下的文章之中我們來了解什麼是python中的回傳函數。了解一下關於python回傳函數的相關知識,好了,廢話不多說我們進入下面的文章吧。
python函數當作傳回值:
高階函數除了可以接受函數當作參數外,還可以把函數傳回作為結果值。
我們來實作一個可變參數的求和。通常情況下,求和的函數是這樣定義的:
def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax
但是,如果不需要立刻求和,而是在後面的程式碼中,根據需要再計算怎麼辦?可以不傳回求和的結果,而是傳回求和的函數:
def lazy_sum(*args): def sum(): ax = 0 for n in args: ax = ax + n return ax return sum
當我們呼叫lazy_sum()時,傳回的不是求和結果,而是求和函數:
>>> f = lazy_sum(1, 3, 5, 7, 9) >>> f <function lazy_sum.<locals>.sum at 0x101c6ed90>
呼叫函數f時,才真正計算求和的結果:
>>> f()25
在這個例子中,我們在函數lazy_sum中又定義了函數sum,並且,內部函數sum可以引用外部函數lazy_sum的參數和局部變量,當lazy_sum返回函數sum時,相關參數和變數都保存在傳回的函數中,這種稱為「閉包(Closure)」的程式結構擁有極大的威力。
請再注意一點,當我們呼叫lazy_sum()時,每次呼叫都會回傳一個新的函數,即使傳入相同的參數:
>>> f1 = lazy_sum(1, 3, 5, 7, 9) >>> f2 = lazy_sum(1, 3, 5, 7, 9) >>> f1==f2False
f1()和f2()的呼叫結果互不影響。
以上就是本篇文章所講述的所有內容,這篇文章主要介紹了相關於python中返回函數的知識,希望你能藉助資料從而理解上述所說的內容。希望我在這片文章所講述的內容能夠對你有幫助,讓你學習python更加輕鬆。
更多相關知識,請造訪php中文網Python教學欄位。
以上是什麼是python返回函數? (實例解析)的詳細內容。更多資訊請關注PHP中文網其他相關文章!