這篇文章主要介紹了python支援回傳函數的實例解析,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
最近接觸python,看到了python中返回函數的概念,以前只接觸過函數返回值,比如python就可以返回int,str,list,dict等等類型數據,這裡要說的是python還支援返回函數。
首先看看python支援返回函數的基本語法
def f(): print 'call f()...' # 定义函数g: def g(): print 'call g()...' # 返回函数g: return g
這裡,最外層的函數f會回傳一個函數g,也就是函數g本身;
下面看看函數呼叫的過程;(接上面)
>>> x = f() # 调用f()call f()...>>> x # 变量x就是上面一个最外层函数返回的函数(不是函数值)<function g at 0x1037bf320> >>> x() # x指向函数,因此可以调用,这里就是调用内层函数x()的过程call g()... # 调用x()就是执行g()函数定义的代码
只回傳函數的作用:
回傳函數可以把一些計算延遲執行。例如,如果定義一個普通的求和函數:
def calc_sum(lst): return sum(lst) >>>calc_sum([1,2,3,4])
結果直接是:10
但是,可以透過傳回函數思想寫程式碼,就可以「延時計算”
def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum
下面是呼叫:
注意,下面程式碼並沒有對函數進行執行計算出結果,而是回傳函數。
>>> f = calc_sum([1, 2, 3, 4]) >>> f <function lazy_sum at 0x1037bfaa0>
對傳回的函數進行呼叫時,才計算出結果
>>>f()10
下面是一個範例:
請寫一個函數calc_prod(lst),它接收一個list,回傳一個函數,傳回函數可以計算參數的乘積。
思想:先定義能計算乘積的函數,再將此函數傳回。
def calc_prod(lst): def lazy_prod(): def f(x,y): return x*y return reduce(f,lst,1) return lazy_prod f = calc_prod([1, 2, 3, 4]) print f()
相關建議:
########################################################################################################################################################################## #######python傳回函數/函數程式設計###################關於函數傳回值的幾種情況##########以上是python支援傳回函數的實例解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!