python既是一门编程语言又是一个套具体的技术,而Cpython是它的默认官方实现.
我们首先来区分清楚编译型语言和解释型语言.
所谓编译型语言是将程序源码编译为计算机可以直接执行的指令的语言,其最核心的东西叫做编译器,编译器负责将源码以及依赖等等打包编译,最终成为可以执行的可执行程序或可以被调用的动态/静态连接库.C,C++,Go,Rust都是典型的编译型语言.
所谓解释型语言是将源码翻译为虚拟机可以看懂的指令,借助虚拟机操作计算机的语言,最核心的东西是虚拟机和解释器.
我们可以将计算机硬件理解成一台汽车,编译型就是自己开车,解释型语言就是打车.
python是解释型语言,自然最核心的就是解释器和虚拟机.解释器负责将源码翻译成虚拟机指令,虚拟机负责根据指令操作计算机.
所有的python实现都是这样一个结构,不同点在于解释器和虚拟机的实现上.比如jpython就是实现了一个解释器将python代码翻译了在jvm上执行,pypy就是自己实现了一套自带jit的虚拟机和解释器.
在CPython中解释器会将Python代码编译为字节码(bytecode)
,然后由Cpython虚拟机来执行这些字节码;虚拟机则是一种执行Python字节码的运行环境.它负责解释和执行由Python解释器生成的字节码指令.虚拟机的工作是将这些字节码指令翻译成计算机底层的指令从而实现Python代码的运行.虚拟机在执行字节码时管理了内存,数据类型,对象生命周期等方面的细节.
Cpython本身是一个C语言编写的程序,它提供了一个可执行文件python
用于启动解释器程序和一个头文件Python.h
用于为C语言提供接口.
本部分仅介绍Cpython,这也是多数建立在python之上的技术的基础