Python 的“解释器”通常指的是 CPython —— 它是 Python 语言的官方参考实现,也是绝大多数开发者日常使用的版本。
下面从“解释器是什么”、“有哪些实现”、“CPython 是用什么编写的”等方面详细说明:
一、Python 的主要解释器实现
Python 是一种语言规范,而“解释器”是该规范的具体实现。目前有多个实现,但 CPython 是默认和主流的。
实现 | 语言编写 | 特点 | 使用场景 |
---|---|---|---|
CPython | C 语言 | 官方实现,包含标准库,支持 C 扩展 | ✅ 99% 的 Python 用户 |
PyPy | RPython(Python 子集) | 带 JIT 编译器,运行速度更快 | 高性能计算、长期运行服务 |
Jython | Java | 运行在 JVM 上,可调用 Java 库 | Java 生态集成 |
IronPython | C# | 运行在 .NET 平台 | Windows/.NET 应用 |
MicroPython | C | 针对微控制器(如 ESP32) | 嵌入式开发 |
Cython | C + Python 混合 | 编译为 C 扩展,提升性能 | 性能关键模块 |
📌 当你从 python.org 下载安装 Python,或使用
apt install python3
,得到的就是 CPython。
二、CPython:官方解释器详解
1. 用什么语言编写的?
- 主要用 C 语言编写(少量汇编用于平台优化)
- 标准库部分模块用 Python 编写(如
os
,sys
的高层接口),但核心(如解释器循环、内存管理、内置类型)全是 C。
2. 源码在哪里?
- 官方仓库:https://github.com/python/cpython
- 核心文件举例:
Python/ceval.c
:字节码解释器主循环("Eval")Objects/
:内置类型实现(int, list, dict 等)Include/
:C API 头文件Lib/
:标准库(Python 代码)
3. 工作流程
graph LR
A[.py 源代码] --> B[词法分析 + 语法分析]
B --> C[生成 AST 抽象语法树]
C --> D[编译为字节码 .pyc]
D --> E[CPython 虚拟机执行字节码]
E --> F[输出结果]
- CPython 先编译为字节码(.pyc 文件),再由 Python 虚拟机(PVM)解释执行
- 所以 Python 是“编译型 + 解释型”混合:编译到字节码,再解释执行
4. 为什么用 C 写?
- 性能:C 接近硬件,适合实现解释器核心
- 可移植性:C 编译器几乎无处不在
- 扩展性:方便通过 C API 编写高性能扩展(如 NumPy、Pandas 底层)
- 历史原因:Python 诞生于 1991 年,当时 C 是系统编程主流
三、其他解释器简要说明
1. PyPy
- 用 RPython(Restricted Python)编写
- 最大特点是 JIT(Just-In-Time)编译器,可将热点代码编译为机器码
- 某些场景比 CPython 快 4~10 倍
- 但启动慢,内存占用高,C 扩展兼容性有限
2. Jython
- 用 Java 编写
- 将 Python 代码编译为 Java 字节码,运行在 JVM 上
- 可直接调用 Java 类库(如
import java.util
) - 不支持 CPython 的 C 扩展(如 NumPy)
3. IronPython
- 用 C# 编写
- 集成 .NET Framework,可调用 C# 库
- 主要用于 Windows 平台自动化或脚本嵌入
四、如何查看当前使用的是哪个解释器?
import sys
print(sys.version)
print(sys.implementation.name)
输出示例(CPython):
3.12.0 (main, Oct 2 2023, 12:34:56) [GCC 11.4.0]
cpython
PyPy 输出:
3.10.14 (7.3.16, ...)]
pypy
五、常见误解澄清
误解 | 事实 |
---|---|
“Python 是纯解释型语言” | ❌ 实际先编译为字节码,再解释执行 |
“所有 Python 都用 C 实现” | ❌ 只有 CPython 用 C,其他实现用不同语言 |
“PyPy 是 Python 的新版本” | ❌ PyPy 是另一种实现,版本号与 CPython 独立 |
总结
问题 | 答案 |
---|---|
Python 默认解释器是什么? | CPython |
CPython 用什么语言编写? | C 语言(核心)+ Python(部分标准库) |
是否还有其他解释器? | 有(PyPy、Jython 等),但 CPython 是绝对主流 |
为什么重要? | CPython 决定了 Python 语言的官方行为、性能特性和扩展机制 |
💡 简单记:当你写
python
或python3
,你就在用 C 写的 CPython 解释器。这是 Python 生态的基石。