小编典典

为什么 Python 不适合函数式编程?

all

我一直认为函数式编程可以用 Python 完成。因此,我很惊讶 Python
在这个问题中没有得到太多提及,而且当它被提及时,它通常不是很积极。然而,对此并没有给出太多的理由(没有提到模式匹配和代数数据类型)。所以我的问题是:为什么
Python
不适合函数式编程?除了缺乏模式匹配和代数数据类型之外,还有更多的原因吗?还是这些概念对函数式编程如此重要以至于不支持它们的语言只能归类为二流函数式编程语言?(请记住,我在函数式编程方面的经验非常有限。)


阅读 108

收藏
2022-04-11

共1个答案

小编典典

您引用的问题询问哪些语言促进了面向对象和函数式编程。Python 并不 提倡 函数式编程,尽管它 工作 得相当好。

在 Python 中反对 函数式编程的最佳论据是 Guido 仔细考虑了命令式/OO 用例,而函数式编程用例则没有。当我编写命令式 Python
时,它是我所知道的最漂亮的语言之一。当我编写函数式 Python
时,它变得像没有BDFL的普通语言一样丑陋和令人不快。

这并不是说它不好,只是如果你切换到一种促进函数式编程的语言或切换到编写 OO Python 时,你必须比你更努力地工作。

以下是我在 Python 中错过的功能性东西:


  • 没有模式匹配和尾递归意味着您的基本算法必须以命令方式编写。递归在 Python 中既丑陋又慢。
  • 一个小的列表库和没有功能字典意味着你必须自己写很多东西。
  • 没有用于柯里化或组合的语法意味着无点样式与显式传递参数一样充满标点符号。
  • 迭代器而不是惰性列表意味着你必须知道你想要效率还是持久性,list如果你想要持久性,就分散调用。(迭代器是一次性的)
  • Python 简单的命令式语法,连同其简单的 LL1 解析器,意味着对于 if-expressions 和 lambda-expressions 更好的语法基本上是不可能的。Guido 喜欢这样,我认为他是对的。
2022-04-11