当前位置: 首页 > 面试题库 >

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

胡承悦
2023-03-14
问题内容

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


问题答案:

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

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

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

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

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


 类似资料:
  • 本文向大家介绍什么是函数式编程?它有什么优缺点?相关面试题,主要包含被问及什么是函数式编程?它有什么优缺点?时的应答技巧和注意事项,需要的朋友参考一下 函数式编程是一种编程范式,关心数据的映射 函数式编程的函数是引用透明的,无副作用,函数的返回值只与函数的参数有关,容易测试和维护 函数式编程的函数的参数是不可变的,会导致,运行时占用资源较多。 参考文章

  • 问题内容: 我经常看到有关不鼓励使用的其他问题的评论。为什么这样不好?有时我只是不在乎错误是什么,我只想继续编写代码。 为什么使用积木不好?是什么让它不好?是我pass出错还是我except出错了? 问题答案: 正如你正确猜到的那样,它有两个方面:通过在后面不指定任何异常类型来捕获任何错误,并在不采取任何操作的情况下简单地传递它。 我的解释要“长一点”,因此; 可以细分为: 不要发现任何错误。始终

  • 这个需要适当的了解一下吧,毕竟函数式编程在Python中也做了引用. 推荐: 酷壳 python中函数式编程支持: filter 函数的功能相当于过滤器。调用一个布尔函数bool_func来迭代遍历每个seq中的元素;返回一个使bool_seq返回值为true的元素的序列。 >>>a = [1,2,3,4,5,6,7] >>>b = filter(lambda x: x > 5, a) >>>pr

  • 问题内容: 我正在一个JavaScript项目上,只是想知道为什么对象实例不继承和其他方法,而不必调用超类(superobject?)方法。 我看过了MDN文档,实际上有“非标准”属性方法。 但这些已被弃用。为什么要转向方法? 在我看来,类似的东西比更好。对于其他一些Object方法,我也会说同样的话。 问题答案: 这是为了避免发生冲突-通常情况下,对象的问题不具有所需值的属性。 JS中的对象通常

  • 本文向大家介绍纯函数和函数式编程有什么关系?相关面试题,主要包含被问及纯函数和函数式编程有什么关系?时的应答技巧和注意事项,需要的朋友参考一下 要实现函数式编程,我们所封装的方法应该是抽象的,应该是和外部状态无关系的,也就需要是纯函数的,这样才能保证抽象的方法可复用而且输出结果只决定于输入参数。

  • 函数响应式编程(FRP)为解决现代编程问题提供了全新的视角。一旦理解它,可以极大地简化你的项目,特别是处理嵌套回调的异步事件,复杂的列表过滤和变换,或者时间相关问题。 我将尽量跳过对函数响应式编程学院式的解释(网络上已经有很多),并重点从实用的角度帮你理解什么是函数响应式编程,以及工作中怎么应用它。本文将围绕函数响应式编程的一个具体实现RxJava, 它可用于Java和Android。 开始 我们