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 生态的基石。