Siempre quise saber de qué iba eso de la programación funcional, pero no me apetecía aprender un nuevo lenguaje para comprenderlo, al menos no por ahora. Por eso, cuando encontré un libro que trataba el tema desde el punto de vista de Python (Functional Python Programming de Steven Lott), no dudé en leérmelo.
Tras su lectura me di cuenta de que he estado usando un montón de principios de programación funcional sin ni siquiera saberlo: utilizar funciones cortas, no alterar estados externos desde el interior de las funciones, usar iteradores donde fuera posible, etc. Eso no significa que no aprendiese nada, por ejemplo me gustó bastante la parte que describía las posibilidades de la librería itertools, la cual no había utilizado hasta el momento.
También es cierto que incluye algunos consejos que no voy a seguir, como el de encadenar funciones. Al libro le gusta mucho el encadenamiento de funcione (pasar la llamada a una función como parámetro a otra), pero al hacerlo se crean líneas de código extremadamente largas y difíciles de leer que me parecen poco "pythonicas". Además, al libro le gusta mucho la recursión y ese es un concepto con el que no me siento cómodo y tampoco es que entendiese muy bien los ejemplos que aparecían en el libro sobre tail-optimization.
Con todo el libro es extenso, sistemático e incluye un montón de ejemplos por lo que creo que merece la pena leerlo aunque sea para quedarse con conceptos sueltos útiles para mejorar globalmente nuestro estilo de programación.