五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 有趣的lambda函數(shù)

有趣的lambda函數(shù)

文章來源:365jz.com     點擊數(shù):268    更新時間:2009-09-19 10:31   參與評論


Python中內(nèi)置了一個有意思的函數(shù):lambda,允許我們快速定義單行的最小的函數(shù),先來看一個簡單的例子:
清單1

  1. >>>def f(x): 
  2. ...    return 2**x 
  3. ... 
  4. >>>f(3) 
  5. >>> 



我們可以用lambda函數(shù)實現(xiàn):
清單2

  1. >>> a = lambda x:2**x 
  2. >>> a(3) 
  3. >>> 


當(dāng)然也可以寫成更簡單方式:
清單3

  1. >>>(lambda x:2**x)(3) 
  2. >>> 



我們注意lambda函數(shù)與其他函數(shù)語法定義不同的地方:
1、參數(shù)列表周圍沒有括號
2、沒有 return 關(guān)鍵字(它是隱含存在的,因為整個函數(shù)只有一行)
3、該函數(shù)沒有函數(shù)名稱,但是可以將它賦給一個變量來使用,此時變量中是lambda函數(shù)的引用

lambda 是一種風(fēng)格問題。不一定非要使用它。假如你在你的項目中大量使用 lambda 函數(shù),你會發(fā)現(xiàn)你的程序變得非常難于維護.(參考:<dive into python>)

我們再來看一個例子來深入學(xué)習(xí):
清單4

  1. >>>a, b = 2, 4 #a=2, b=4 
  2. >>>(lambda x:x*x)(a and b) 
  3. 16 
  4. >>>(lambda x:x*x)(a or b) 
  5. >>> 



如果你學(xué)習(xí)過其他編程語言,比如 C 或者 pascal ,一定對形如 bool? a:b 這樣的表達式很熟悉,當(dāng)然python中也有類似的表達式,但是我們現(xiàn)在討論的是將類似的表達式放到 lambda 函數(shù)中去,所以這時我們要用到奇妙的 and 和 or 運算.

來看一個 and 運算的例子:
清單5

  1. >>>'a' and 'b' 
  2. 'b' 
  3. >>> '' and 'b' 
  4. '' 
  5. >>> 'a' and 'b' and 'c' 
  6. 'c' 



1、使用 and 時,表達式從左到右進行運算,按照慣例,0,'',(),{},[],None 在布爾運算時為假;除此之外的任何東西都為真.
2、如果表達式中的某個值為假,and 運算返回第一個假值
3、所有值都為真,and 運算返回最后一個真值

在上面的例子中,'' 是第一個假值

來看一個 or 運算的例子:
清單6

  1. >>>'a' or 'b' 
  2. 'a' 
  3. >>>'' or 'b' 
  4. 'b' 
  5. >>>'' or [] or {} 
  6. {} 
  7. >>>def func(): 
  8. ...    print "in func()" 
  9. ...    return 1 
  10. >>>'a' or func() 
  11. 'a' 



1、or 的運算順序和 and 相同,都是從左到右
2、它返回第一個真值,而且是立即返回,這意味著它將放棄后面的比較。(如果人生也能如此簡單就好了)
3、如果所有的值都為假,它返回最后一個假值

現(xiàn)在我們回過頭來再去看清單4中的例子,是不是覺得簡單多了?

呵呵,是的,python 還有很多神奇之處,我會在學(xué)習(xí)的過程中不斷的和大家分享。

本文來自 python吧 ,歡迎轉(zhuǎn)載,但請保留我站鏈接,謝謝。

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點擊進入論壇

發(fā)表評論 (268人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號