
史蒂文·洛特
Python具備函數式編程的許多核心特徵,因此可以借鑑其他函數式語言的設計模式和編程技術,編寫出簡潔優雅的代碼。本書首先介紹函數式編程的一般概念及特點,然後講解迭代器、生成器表達式、內置函數、常用高階函數、遞歸與歸約、實用模塊和裝飾器的用法,以及避開Python嚴格求值順序的變通方法、Web服務設計方法和一些優化技巧。
這本書吧, 怎麼說呢, 有點尷尬. 從實踐角度來說呢, 真做EDA的(譬如我), map, reduce, filter 夠了, 而且往往也是在 pandas 這樣的框架下去做. 從思想角度來說呢, 大地圖寫的不錯, 小細節就不是很好. 但好在一點, 相對來說代碼是規範的. 但也正是 typing + Python + FP, 我第一個問題就是, 我爲什麼不去寫 F# 呢. 但是概念的解釋和分析還是不錯的, 如果主力用 Python 建議讀一讀開闊一下眼界, 而且也有助於寫好 Pandas. (我對處理 Pandas, 的確是深入理解 FP 以後開始寫的越來越好的.)
本來想入門Python函數式編程,一上來看這麼晦澀的書,新手勸退,溜了溜了
函數式編程爲創建代碼簡潔明瞭的軟件提供了許多技術。
講得不錯。很有啓發性。適合喜歡函數式編程的人來閱讀。不適合新手。要對 Python 有一定的理解再讀這本書。
優點:對函數式編程概念、特性的介紹清晰準確,更易理解。幫我理解了Haskell這樣的純函數語言的設計思路。尤其是PyMonad的講解,雖然內容較少,但有些地方醍醐灌頂。包括web服務的函數式設計、函數式編程的設計模式,都能找出亮點。 缺點:版本較老,python新特性會改變書中的一些章節。面向EDA,其他的例子幾乎沒有。如前面的評論,大型EDA會用Scala、spark。 此書適合只用Python進行AI相關編程,涉及大多是數據處理的人士。以及想了解函數式編程在不同語言中的支持和應用的人士。
雖然這本書部分內容稍顯過時,但是對於函數式編程的概念講解還是比較透徹的。此外,對於本書提及的PyMonad庫,個人感覺比較晦澀難用,相反我更推薦提供了一系列迭代工具的cytoolz庫,以上。