Python函数式编程代码片段

9 投票
4 回答
1056 浏览
提问于 2025-04-15 18:11

我看到一些优雅的Python代码,使用了列表推导和映射归约的技巧。你能分享一些这样的代码或者推荐一个网站吗?

谢谢。

4 个回答

3

在用Python进行函数式编程时要小心。这样做的唯一理由就是为了提高代码的可读性。如果用函数式的方式表达算法比用命令式的方式更优雅,而且不会导致性能问题(通常不会),那就可以尝试。

不过,Python并不优化尾递归,而且递归的深度限制是1000次,所以一般情况下你不能使用O(n)的递归,只能使用O(log(n))的递归。

另外,Python 3中去掉了reduce()这个函数,这也是有原因的(http://www.artima.com/weblogs/viewpost.jsp?thread=98196)。大多数复杂的reduce用法用普通的循环来写会更容易理解,而且sum()这个函数已经内置了。

5

这里面有一些很不错的函数式编程风格的代码片段:函数式编程入门指南

7

Python 不是 Lisp。请不要试图让它看起来像 Lisp。这样做只会削弱 Python 最大的优点之一,那就是它的可读性和易懂性。

如果你喜欢函数式编程,可以去学习 HaskellML 或者 F#。你会对这些语言提供的功能感到惊讶(比如从纯函数开始)。

撰写回答