python解析器的认识
当我们编写Python
代码时,我们得到的是一个包含Python
代码的以.py
为扩展名的文本文件。要运行代码,就需要Python
解释器去执行.py
文件。
由于整个Python
语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python
解释器来执行Python
代码(当然难度很大)。事实上,确实存在多种Python
解释器。
CPython
当我们从Python
官方网站下载并安装好Python 3.x
后,我们就直接获得了一个官方版本的解释器:CPython
。这个解释器是用C
语言开发的,所以叫CPython
。在命令行下运行python
就是启动CPython
解释器。
CPython
是使用最广的Python
解释器。如果没特别的修改,我们一般使用都是CPython
解析器。
IPython
IPython
是基于CPython
之上的一个交互式解释器,也就是说,IPython
只是在交互方式上有所增强,但是执行Python
代码的功能和CPython
是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython
用>>>
作为提示符,而IPython
用In [序号]:
作为提示符。
PyPy
PyPy
是另一个Python
解释器,它的目标是执行速度。PyPy
采用JIT
技术,对Python
代码进行动态编译(注意不是解释),所以可以显著提高Python
代码的执行速度。
绝大部分Python
代码都可以在PyPy
下运行,但是PyPy
和CPython
有一些是不同的,这就导致相同的Python
代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy
下执行,就需要了解PyPy
和CPython
的不同点。
Jython
Jython
是运行在Java
平台上的Python
解释器,可以直接把Python
代码编译成Java
字节码执行。
IronPython
IronPython
和Jython
类似,只不过IronPython
是运行在微软.Net
平台上的Python
解释器,可以直接把Python
代码编译成.Net
的字节码。
小结
Python
的解释器很多,但使用最广泛的还是CPython
。如果要和Java
或.Net
平台交互,最好的办法不是用Jython
或IronPython
,而是通过网络调用来交互,确保各程序之间的独立性。