python函数实例解析_python支持返回函数的实例解析
這篇文章主要介紹了python支持返回函數(shù)的實(shí)例解析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
最近接觸python,看到了python中返回函數(shù)的概念,以前只接觸過(guò)函數(shù)返回值,比如python就可以返回int,str,list,dict等等類(lèi)型數(shù)據(jù),這里要說(shuō)的是python還支持返回函數(shù)。
首先看看python支持返回函數(shù)的基本語(yǔ)法def f():
print 'call f()...'
# 定義函數(shù)g:
def g():
print 'call g()...'
# 返回函數(shù)g:
return g
這里,最外層的函數(shù)f會(huì)返回一個(gè)函數(shù)g,也就是函數(shù)g本身;
下面看看函數(shù)調(diào)用的過(guò)程;(接上面)>>> x = f() # 調(diào)用f()call f()...>>> x # 變量x就是上面一個(gè)最外層函數(shù)返回的函數(shù)(不是函數(shù)值)
>>> x() # x指向函數(shù),因此可以調(diào)用,這里就是調(diào)用內(nèi)層函數(shù)x()的過(guò)程call g()... # 調(diào)用x()就是執(zhí)行g(shù)()函數(shù)定義的代碼只返回函數(shù)的作用:
返回函數(shù)可以把一些計(jì)算延遲執(zhí)行。例如,如果定義一個(gè)普通的求和函數(shù):def calc_sum(lst):
return sum(lst)
>>>calc_sum([1,2,3,4])
結(jié)果直接是:10
但是,可以通過(guò)返回函數(shù)思想寫(xiě)代碼,就可以“延時(shí)計(jì)算”def calc_sum(lst):
def lazy_sum():
return sum(lst) return lazy_sum
下面是調(diào)用:
注意,下面代碼并沒(méi)有對(duì)函數(shù)進(jìn)行執(zhí)行計(jì)算出結(jié)果,而是返回函數(shù)。>>> f = calc_sum([1, 2, 3, 4])
>>> f
對(duì)返回的函數(shù)進(jìn)行調(diào)用時(shí),才計(jì)算出結(jié)果>>>f()10
下面是一個(gè)例子:
請(qǐng)編寫(xiě)一個(gè)函數(shù)calc_prod(lst),它接收一個(gè)list,返回一個(gè)函數(shù),返回函數(shù)可以計(jì)算參數(shù)的乘積。
思想:先定義能計(jì)算乘積的函數(shù),再將此函數(shù)返回。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()
相關(guān)推薦:
總結(jié)
以上是生活随笔為你收集整理的python函数实例解析_python支持返回函数的实例解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: win10一按右键就闪屏_升级Win10
- 下一篇: python中long类型_浅谈pyth