当谈到Python时,一般指的是CPython。但Python实际上是一门语言规范,只是定义了Python这门语言应该具备哪些语言要素,应当能完成什么样的任务。这种语言规范可以用不同的方式实现,可以用C实现,也可以用C++、Java、C#、JavaScript,甚至使用Python自己实现。这篇文章就是简要介绍并比较不同的Python实现,并且今后还会不断的扩充。
CPython
CPython是标准Python,也是其他Python编译器的参考实现。通常提到“Python”一词,都是指CPython。CPython由C编写,将Python源码编译成CPython字节码,由虚拟机解释执行。没有用到JIT等技术,垃圾回收方面采用的是引用计数。
所以当有人问道Python是解释执行还是编译执行,可以这样回答:Python(CPython)将Python源码编译成CPython字节码,再由虚拟机解释执行这些字节码。
如果需要广泛用到C编写的第三方扩展,或让大多数用户都能直接使用你的Python代码,那么还是使用CPython吧。
Jython
Jython在JVM上实现的Python,由Java编写。Jython将Python源码编译成JVM字节码,由JVM执行对应的字节码。
IronPython
IronPython与Jython类似,所不同的是IronPython在CLR上实现了Python,即面向.NET平台,由C#编写。IronPython将源码编译成TODO CLR,同样能很好的与.NET平台集成。
PyPy
PyPy是用Python实现的Python解释器。