小編給大家分享一下Python如何實現(xiàn)返回函數(shù)+匿名函數(shù),希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)公司始終堅持【策劃先行,效果至上】的經(jīng)營理念,通過多達(dá)十年累計超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的營銷推廣解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:封陽臺等企業(yè),備受客戶贊賞。粗粗看了一遍學(xué)習(xí)資料,感覺返回函數(shù)的意思好理解,但是實際應(yīng)用起來就有點麻煩了。
先捋一捋思路叭。
首先,高階函數(shù)除了能接收函數(shù)作為參數(shù)外,也能將函數(shù)作為結(jié)果值返回。
拿求和做個簡單的例子:
一般的求和函數(shù)我們會這樣寫:
>>> def calc_sum(*args):
a = 0
for n in args:
a = a + n
return a
>>> calc_sum(1,2,3,4)
10
直接求解,返回結(jié)果。
但是有時候我們不需要立刻求和,可能后面還需要計算,這個時候就要用到返回函數(shù)了。
(當(dāng)我看到這里的時候,腦子里想的一直都是:為什么不要它立刻求和??)
返回函數(shù)到底又什么作用呢?
就好比做一件事,在做的過程中,返回函數(shù)的作用就是告訴你,我做到哪里/如何了,你能干嘛干嘛了。
暫時沒有更具體的例子,希望以后能遇到,加深一下理解?。ㄌ橄罅耍。。?/p>
好,回過頭再來看看 求和用返回函數(shù)怎么寫。
(不返回求和結(jié)果,而是返回一個求和的函數(shù))
>>> def lazy_sum(*args):
def sum():
a = 0
for n in args:
a = a + n
return a
return sum
>>> f = lazy_sum(1,3,5,7,9)
>>> f
可以看到,當(dāng)我們調(diào)用lazy_sum()
時,返回的不是求和結(jié)果,而是求和函數(shù)。
如果要計算真正的求和結(jié)果,就要再調(diào)用f.【 f() 相當(dāng)于sum() 】
>>> f()
25
內(nèi)部函數(shù)sum
可以引用外部函數(shù)lazy_sum
的參數(shù)和局部變量。
當(dāng)lazy_sum
返回函數(shù)sum
時,相關(guān)參數(shù)和變量都保存在返回的函數(shù)中。(雖然這是一句很好理解的話,但是我莫名感覺它不簡單!
這種程序結(jié)構(gòu),叫做“閉包”(Closure)。(吼!
這里需要注意的是,每次調(diào)用lazy_sum,返回的都是一個新的函數(shù)!
就算傳入?yún)?shù)相同,返回的函數(shù)也不同!
>>> f1 = lazy_sum(1, 3, 5, 7, 9)
>>> f2 = lazy_sum(1, 3, 5, 7, 9)
>>> f1==f2
False
( f1() 和 f2()的調(diào)用結(jié)果互不影響
看完了這篇文章,相信你對“Python如何實現(xiàn)返回函數(shù)+匿名函數(shù)”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!