Python lambda和Python def區別分析

來源:互聯網
上載者:User
Python支援一種有趣的文法,它允許你快速定義單行的最小函數。這些叫做lambda的函數,是從Lisp借用來的,可以用在任何需要函數的地方。

lambda的文法時常會使人感到困惑,lambda是什麼,為什麼要使用lambda,是不是必須使用lambda?

>>> def f(x):...   return x+2...>>> f(1)3>>> f = lambda x:x+2>>> f(1)3>>> (lambda x:x+2)(1)3

Python def和Python lambda它們有相似點也有不同點。
相似點: 這兩個很重要的相似點就是都可以定義一些固定的方法或者是流程,供給程式來調用,比如上面例子中定義一個變數加2的方法。 輸出的結果都是3,如果你要完成一些固定的流程的話,上面幾種你都可以任意選擇。

上面是相同點,那麼有那些不同點?
它們的主要不同點是Python def是語句而Python lambda是運算式。lambda簡化了函數定義的書寫形式,使代碼更為簡潔。但是使用函數的定義方式更為直觀,易理解。

Python裡面語句是可以嵌套的,比如你需要根據某個條件來定義方法,那隻能用def。用lambda就會報錯。

>>> if a==1:...   def info():...     print '1'*5... else:...   def info2():...     print 'info2'

而有的時候你需要在python運算式裡操作的時候,那需要用到運算式嵌套,這個時候Python def就不能得到你想要的結果,那隻能用Python lambda,如下例子:
輸出e字串出現頻率最高的字母:

>>> str='www.linuxeye.com linuxeye.com'>>> L = ([(i,str.count(i)) for i in set(str)])[(' ', 1), ('c', 2), ('e', 4), ('i', 2), ('m', 2), ('l', 2), ('o', 2), ('n', 2), ('u', 2), ('w', 3), ('y', 2), ('x', 2), ('.', 3)]>>> L.sort(key = lambda k:k[1],reverse = True)>>> print L[0][0]e
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.