可愛的Python:Python中的函數編程(二)

來源:互聯網
上載者:User

專欄繼續 David 對 Python 中的函數編程 (FP) 的介紹。請閱讀本文對解決編程問題的不同範例的介紹,在介紹過程中 David 將闡述幾個中進階的 FP 概念。

在 第 1 部分,有關函數編程的前一個專欄中,我介紹了一些 FP 的基礎概念。本專欄將進一步深入研究這一概念性相當強的領域。對於我們的研究,Bryn Keller 的 “Xoltar 工具包” 將提供有用的協助。Keller 把很多 FP 的優勢都集中在一個包括純 Python 技術執行的小巧模組中。除了 functional 模組,Xoltar 工具包還包括 lazy 模組,該模組支援“只在需要時”賦值的結構。許多傳統函數語言也具有緩式賦值,因此在這些組件中,Xoltar 工具包使您獲得象 Haskell 這樣的函數語言該有的大部分功能。

綁定

細心的讀者可能記得我在 第 1 部分的函數技術中指出的限制。特別在 Python 中不能避免表示函數運算式的名稱的重新綁定。在 FP 中,名稱通常被理解為較長運算式的縮寫,但這一說法暗示著“同一運算式總是求出相同的值”。如果標記的名稱重新被綁定,這一暗示便不成立。例如,讓我們定義一些在函數編程中要用到的快捷運算式,比如:

清單 1. 以下 Python FP 部分的重新綁定要造成故障

>>> car =

     lambda

     lst: lst[0]
>>> cdr =

     lambda

     lst: lst[1:]
>>> sum2 =

     lambda

     lst: car(lst)+car(cdr(lst))
>>> sum2(range(10))
1
>>> car =

     lambda

     lst: lst[2]
>>> sum2(range(10))
5

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.