小编典典

为什么Python对于函数式编程不是很好?

python

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


阅读 174

收藏
2020-12-20

共1个答案

小编典典

您所参考的问题将询问哪些语言同时促进OO和功能编程。即使Python 运作 良好,它也不会 促进 函数式编程。 __

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

这并不是说这很糟糕,只是您必须比您改用促进功能编程的语言或改用编写OO Python的语言更加努力。

以下是我在Python中缺少的功能:


  • 没有模式匹配,也没有尾递归,这意味着必须强制性地编写基本算法。递归在Python中很丑陋而且很慢。
  • 一个小的列表库,没有功能词典,这意味着您必须自己编写很多东西。
  • 没有用于currying或composition的语法,这意味着无点样式几乎像显式传递参数一样充满标点符号。
  • 迭代器而不是惰性列表意味着您必须知道是要效率还是持久性,list如果需要持久性,则必须分散调用。(迭代器只能使用一次)
  • Python的简单命令式语法及其简单的LL1解析器意味着,基本上不可能为if-expressions和lambda-expressions提供更好的语法。Guido喜欢这种方式,我认为他是对的。
2020-12-20