Python 变量是 duck 类型的、可变的,它的函数可以编写为具有副作用。 (换句话说,它有很多非函数式编程的特性。)
然而,它也有一流的功能,但它不是一种函数式编程语言。所以我猜想一定是真的,一种编程语言可以具有功能方面(或另一种语言范式的方面),即使它不属于该范式。究竟是什么让 Python 成为一种函数式编程语言?是测试它是否具有单一特性还是多个事物的测试? (如果是前者,使 Python 无法运行的单一方面或使 Haskell 正常运行的单一方面是什么?)
请您参考如下方法:
Python 被认为是函数式的;如果你可以信任Wikipedia :
Paradigm Multi-paradigm: functional, imperative, object-oriented, reflective
强调我的。这是来自摘要侧边栏。
应该注意的是,一种语言的“FP-ness”不是二元的,它是连续的。据我所知,Python 没有内置对不可变结构的有效操作的支持。这是对它的一大打击,因为不变性可以被认为是 FP 的一个强大方面。它还不支持尾调用优化,这在处理递归解决方案时可能是个问题。正如您所提到的,它确实具有一流的功能,并且内置了对一些习语的支持,例如 map/comprehensions/generator expressions、reduce 和惰性处理数据。
如果您想专门处理函数式编程习语,Python 可能不是最佳选择。不过,仅凭这一点并不能排除它被视为功能性语言。
