Python 是一种具有多种用途的高级编程语言,支持多种编程范式,包括过程式编程、面向对象编程、命令式编程、面向切面编程和函数式编程。
Python 经过扩展后还可以支持逻辑编程。Python 是一种解释型语言,可以帮助开发者用比 C++、Java 以及其他语言更少的代码行完成同样功能的程序。Python 支持动态类型和自动内存管理。
Python 自带一个全面的标准程序库,还有大量满足具体任务需求的第三方程序库。通过程序包管理工具,如pip、easy_install、homebrew(MacOS X系统)、apt-get(基于 Debian 的 Linux 系统),以及其他安装工具(如 Anaconda),安装 Python 程序包都非常容易。
Python 是开源语言;它的解释器可以运行在多种操作系统上,包括 Windows、Linux、OS X 等系统。还有许多工具可以把 Python 程序编译成面向不同操作系统的可执行文件,如 Py2exe 和 PyInstaller。
注意:可执行文件是独立代码,不需要 Python 解释器就能独立运行。
说实话,如果仅从 Python 语言本身来看这个问题,可能其他编程语言更有优势。不过我们有 NumPy、SciPy、IPython 和 matplotlib 程序库,它们让 Python 成为了科学计算的最佳选择。我们将在后面文章中介绍这些程序库。
Python的优势
下面来总结一些 Python 语言和相关科学计算程序库的综合特性,这些特性让 Python 比其他编程语言(如 MATLAB 和 R 等)更适合做科学计算。基本上没有一种语言可以满足以下所有特性。
1. 简洁易读的代码
Python 代码通常都很简洁,相比其他科学计算语言更加容易理解。正如Python指导原则中所说的,简洁是 Python的设计哲学。
2. 编程范式丰富的语言设计
总的来说,Python 语言的设计非常适合做科学计算,因为 Python 支持多种编程范式,包括过程式编程、面向对象编程、函数式编程和逻辑编程。用户可以有多种选择,可以自行确定最适合解决问题的范式。这一点在其他科学计算的编程语言中都是没有的。
3. 免费与开源
Python 及其科学计算工具都可免费使用,而且都是开源的。这一点的好处是可以获取源代码。而其他大多数科学计算工具都是独家销售的产品,其本身的算法和内容也没有向用户公开。
4. 语言交互能力
Python 具有与大多数主流技术相互操作的交互能力。我们可以调用不同的编程语言的函数、代码、程序包和对象,例如MATLAB、C、C++、R、Fortran 以及其他语言。还有许多方法可以实现这种交互能力,例如 Ctypes、Cython 和 SWIG 等。
5. 可移植与可扩展
Python 支持绝大多数平台。因此,它是一种可移植的编程语言,而且它的程序在一个平台上写完后,迁移到另一个支持 Python 的平台上运行时,输出结果几乎是一样的。Python 背后的设计原则使得它成为一种可以进行高度扩展的语言,这就解释了为什么我们可以拥有那么多可以解决
各种任务的高级程序库。
6. 层次化模块系统
Python 使用模块化系统在命名空间中以函数和类的形式组织程序。为了让 Python 的概念容易被人们学习和记忆,命名空间系统的设计非常简单。这么做还增强了代码的可读性与可维护性。
7. 图形用户界面程序包
Python 提供了许多图形用户界面程序包和工具组合。这些工具套件和程序包可以用来做图形设计、用户界面设计、数据可视化以及许多其他与图形相关的事情。
8. 数据结构
Python 支持非常全面的数据结构。数据结构在进行科学计算的程序的设计和实现过程中至关重要。Python 语言的数据结构功能中最大的亮点就是词典。
9. Python的测试框架
Python 的单元测试框架 PyUnit 具有完整的单元测试功能,可以和用户的 Python 程序整合在一起。它支持许多重要的单元测试概念,包括测试夹具、测试用例、测试套件和测试运行器。
10. 丰富的第三方程序库
Python 认同“自备电池”的哲学,所以它的标准程序库里有丰富的程序包。作为一个可扩展的语言,Python 也为不同需求的用户提供了大量成熟的个性化程序库。下面简单介绍一些用于科学计算的程序库。
NumPy/SciPy 程序包可以满足科学计算中的许多数学和统计需求。SymPy 程序库具有符号计算功能,可以实现基本算术、代数、积分、离散数学、量子物理等学科的符号计算。PyTables 是一个高效处大体量数据集的程序包,通过一种分层数据库的形式(HDFS)存储数据。IPython 让Python 实现了交互式计算。
它是一个命令行工具,同时支持多种语言的交互式计算。matplotlib 程序库为 Python/NumPy 提供画图功能,可以画出许多的图形,例如线性图、直方图、散点图以及 3D 图。
SQL Alchemy 是一个 Python 编程的对象关系映射程序库。通过它,我们可以借助数据库的能力,让科学计算变得更加高效、轻松。最后,还应该介绍一个工具箱,它建立在前面介绍过的这些程序包以及其他众多开源程序库和工具箱的基础之上。这个工具箱的名字叫 SageMath。它也是一个开源数学软件。
Python的不足
介绍完 Python 相比其他科学计算语言的优越性之后,如果思考Python的缺点,会发现 Python 比较突出的一个缺点是它的集成开发环境(integrated development environment,IDE)没有其他语言强大。
Python 工具箱是把分散在各处的程序包和工具箱组合起来,其中有一些还是命令行界面。因此,就这一点来看,Python 在一些平台上相比其他语言要逊色,例如 Windows 系统上的 MATLAB。但是,这并不是说 Python 使用起来不方便,其实它依然很容易使用。