Python 是函数式编程语言还是面向对象语言?

问题描述 投票:0回答:2

根据tutorialspoint.com,Python是一种函数式编程语言。 “一些流行的函数式编程语言包括:Lisp、Python、Erlang、Haskell、Clojure 等。”

https://www.tutorialspoint.com/featured_programming/functional_programming_introduction.htm

但其他消息来源称 Python 是一种面向对象的编程语言(您可以在 Python 中创建对象)。

那么Python两者都是吗? 如果是这样,如果您尝试编写需要大量数学计算的程序,Python 仍然是一个不错的选择(因为函数式语言具有并发性、更好的数学语法和更高级别的函数)?

python oop functional-programming
2个回答
22
投票

Python 与许多其他语言一样,是一种多范式语言。您可以将其用作相当严格的命令式语言,可以以更面向对象的方式使用它,也可以以更函数式的方式使用它。但需要注意的一件重要事情是,功能性通常与命令式形成对比,面向对象往往存在于不同的级别,并且可以“分层”在更命令性或更功能性的核心之上。

然而,Python 在很大程度上是一种命令式和面向对象的语言:许多内置函数和标准库实际上都是围绕类和对象构建的,并且它不鼓励函数式语言通常驱使用户进行的那种思考。

事实上,浏览您链接到的文章提供的(相当糟糕的)列表,Python 或多或少都属于 OOP 方面:

  • 它并没有太多使用不可变数据(在纯Python中定义不可变类型实际上是不可能的,大多数集合都是可变的,而那些不可变的集合则不是为功能更新而设计的)
  • 它的执行模型非常势在必行
  • 它对并行编程的支持有限
  • 它的功能确实有副作用
  • 流量控制绝对不是使用函数调用来完成的
  • 这不是一种鼓励递归的语言
  • 执行顺序非常相关并且定义相当严格

话又说回来,这篇文章的大部分内容都是废话。如果这是该网站的典型情况,我建议使用其他网站。

如果是这样,如果你想编写一些非常数学和计算性的东西,Python仍然是一个不错的选择

Python 本身是一种相当慢的语言,但同时它拥有一个非常庞大且强大的科学库生态系统。它可能不是抽象数学的主要语言(它在符号操作方面相当糟糕),但它往往是一种相对较好的粘合剂或原型设计工具。

因为函数式语言更适合数学的东西

不一定。但如果不知道“数学东西”的真正含义,就很难判断。你的意思是符号操作吗?统计数据?困难的计算?完全是别的东西吗?


0
投票

Python 是两者兼而有之。它可以充当面向函数和面向对象的编程语言。

面向功能的示例:

def fname():
 #some block of code

 `fname()`

OOPS 示例:

class Item:
 name
 id
 price
 purchase():
  #some code

item = Item()
item.name = "Shirts"

理解这一点非常重要。感谢您的提问并帮助更多的人学习!

© www.soinside.com 2019 - 2024. All rights reserved.