关于 Python 的几个概念

在阅读关于 python 或是利用 python 开发的工具包文档时,有时候会遇到一些概念,这些写下来,理一理思路。

什么是 Python

与 C/C++ 类似也有些不同,python 是一种跨平台的、面向对象的、解释型的计算机程序设计语言。

什么是解释型语言

说 python 是解释型语言,是区别于 C/C++ 等需要编译的编程语言来说的。

如果要进行划分的话,可以将 C/C++ 归为编程型语言,而 Python 和 Java 可以被归为解释型语言,区别为:

对于 C/C++ 等编译型语言,从源码到可执行文件要经过:

  1. 预处理:预处理相当于根据预处理命令将源代码转换为新的 C 程序
  2. 编译:将得到的新的 C 程序翻译成汇编代码
  3. 汇编:将汇编文件翻译为机器指令,并打包成可重定位目标程序的文件
  4. 链接:将引用的其它文件加到汇编后的文件中,处理后得到最终的可执行文件

而对于 Python 等解释型语言,过程则为:

  1. 用户提交源码
  2. 解释器将之翻译为字节码,Python 中一般为 .pyc 文件,此时机器仍然不能执行
  3. 字节码交由虚拟机执行,由于字节码不依赖于操作系统,因此可以进行跨平台开发

这里的虚拟机并不是 vmware 这种虚拟机。实际上 Python 虚拟机实际上是在模拟操作中执行文件的过程。

Python 中的解释器

通常情况下,编写后的 Python 代码会以 .py 为扩展名的文本文件保存。而代码想运行,必须通过解释器执行,Python存在多种基于不同语言开发的解释器。每个解释器有不同的特点,但都能正常运行Python代码。

CPython

  • 当从 Python 官网完成 Python 语言的下载和安装后,我们就获得了一个官方版本的解释器:CPython。
  • 该解释器是由 C 语言进行开发的,因此该解释器就被称为 CPython。
  • 此时运行 Python 就是使用的 CPython 解释器。
  • CPython 是标准 Python,也是其他 Python 编译器的参考实现。
  • 通常提到 “Python” 一词,都是指 CPython。
  • 目前来说,CPython 是使用最广的 Python 解释器。

IPython

  • IPython 是基于 CPython 之上的一个交互式解释器。
  • IPython 只是在交互方式上有所增强,但是执行 Python 代码的功能和 CPython 是完全一样的。
  • CPython 用 >>> 作为提示符,而 IPython 用 In[num]:作为提示符。

PyPy

  • PyPy采用JIT技术,对Python代码进行动态编译
  • 相对于CPython,PyPy的性能提升非常明显
  • 但对第三方模块的支持不够。

Jython

  • Jython 是在 JVM 上实现的 Python 解释器,由 Java 编写。
  • Jython 将 Python 源码编译成 JVM 字节码,由 JVM 执行对应的字节码。
  • 因此能与 JVM 进行集成

IronPython

  • IronPython 和 Jython 类似
  • 只不过 IronPython 是运行在微软 .Net 平台上的 Python 解释器
  • 由 C# 编写
  • 可以直接把 Python 代码编译成 .Net 的字节码。
  • 能很好的与 .NET 平台集成

什么是 Python 发行版

python 其实不止简单地包含语法,其实广泛的 python 指的是与 python 相关的一个大型程序语言生态系统,其中还包含了满足不同编程需求的软件包。但是有时候为了运行和使用方便,也为了满足不同的使用需求,会选择不同的发行版本。

Python 发行版有点类似于 Linux 发行版的概念。对比 Linux 发行版来说,虽然各种 Linux 发行版有所差别,但是使用的内核却是相同的。而不同的 Python 发行版可以简单看作是对某部分工具进行集成或者进行了性能优化。

比较常用的几种 Python 发行版都有:

CPython

  • CPython 属于 Python 参考实现方案,可以认为是所有其他 Python 衍生发行版的一个标准
  • 作为标准,也因为其设计取向,其对没有对性能作出深度优化
  • 但可以根据需求自行添加

Anaconda Python

  • Anaconda 服务目标为需要由商业供应商提供支持且具备企业支持服务的 Python 开发者
  • Anaconda 包含了商业和科学计算的常用库
  • Anaconda 的桌面应用程序 Anaconda Navigator,能让用户通过 GUI 进行操作
  • Anaconda 的 conda 软件包管理器能够根据外部软件要求安装 Python 以及第三方软件包
  • 由于 Anaconda 当中包含大量实用性库,因此 Anaconda 的安装体积往往要比 CPython 大得多
  • 如果必要,也可以安装精简版本的 Anaconda— Miniconda

ActivePython

  • ActivePython 主要面向企业用户与数据科学家
  • ActivePython 使用 Python 中的 pip 软件包管理器,但也以压缩包的形式提供数百套通用库
  • 如果需要将现有项目升级至具有复杂依赖关系的较新版本的,则需要同时升级 ActivePython

PyPy

与 Python 解释器的对应内容类似

Jython

与 Python 解释器的对应内容类似

题外话

在 Python 解释器和发行版中出现了重复的内容,可以认为是发行版本中采用了对应的解释器。

参考资料

  1. https://www.liaoxuefeng.com/wiki/897692888725344/966138843228672
  2. https://blog.51cto.com/12306609/2102983
  3. http://blog.az009.com/433.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值