简短结论:通常把 Python(指最常用的实现 CPython)称为“解释型语言”,但更准确地说是——
先把源码编译为字节码(.pyc),再由解释器的虚拟机逐条解释执行。所以它是“编译 + 解释”的混合流程,而不是直接编译成机器码运行。
细化说明
• CPython 执行管线:源码 .py → 解析/编译 → 字节码(PyCodeObject,缓存为 pycache/*.pyc) → 虚拟机解释执行。.pyc 不是本机机器码,仅供该 Python 版本使用,加速启动。
• 为什么常说它是解释型:最终并不是把程序提前变成平台机器码,而是由解释器在运行期驱动字节码执行。
• 别的实现:
• PyPy:带 JIT,会把热点路径在运行时编译为机器码,速度常比 CPython 快。
• Cython / mypyc / Nuitka:可把(部分受限的)Python/带类型注解的代码AOT 编译为 C/C++/本机码,获得更接近“编译型”的性能与部署形态。
• 实用小技巧
• 查看字节码:
import dis
def f(x): return x + 1
dis.dis(f)
• 观察 .pyc:运行后在 __pycache__/ 下生成;用 python -B 可禁写 .pyc。
一句话:日常你可以把 Python 当作“解释型”,但底层确实有一个先编译为字节码再解释执行的步骤;不同实现还可引入 JIT 或 AOT,使它更“像编译型”。
1394

被折叠的 条评论
为什么被折叠?



