一、python解释器

解释器说明:

        当我们编写Python代码时,我们得到的是一个包含python代码的以.py为扩展名的文本文件。要运行代码,就需要python解释器去实行python文件。

        由于整个python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写python解释器来执行python代码,下面我们来看下都有哪些python解释器。

1、cpython

        当我们从python官网下载并安装好python2.7后,我们就直接获得了一个官方版本的解释器:CPython,这个解释器是用C语言开发的,所以叫CPython,在命令行运行python就是启动cpython解释器。

 

2、ipython

        ipython是基于cpython之上的一个交互式解释器,也就是,ipython只是在交互方式上有所增强,但是执行python代码的功能和cpython是完全一样的,

        CPython用>>>作为提示符,而IPython用In[序号]:作为提示符。

 

3、PyPy

        PyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高python代码的执行速度。

绝大部分python代码都可以在PyPy下运行,但是PyPy和Cpython有些是不同的,这就导致相同的python代码在两种解释器下执行可能会有不同的结果,如果你的代码放到PyPy下执行,就需要了解PyPy和CPython的不同点。

 

4、Jython:

Jython是运行在java平台的python解释器,直接可以把python代码编译成java代码执行。

 

5、IronPython

IronPython和Jython类似,只不过IronPython试运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码

 

说明:

        Python的解释器很多,但使用广泛的还是Cpython。如果要和JAVA或.Net平台交互,最好的办法不是Jython或IronPython,而是通过网络调用来交互,确保个各程序之间的独立性,下面是CPython的解释器,分两种:

1、全局解释器

#!/usr/bin/env python               #表示到系统里找python解释器

2、默认解释器

#!/usr/bin python                  #表示在/usr/bin/目录下找python解释器

 

二、编码

        Python 2.X的默认编码是采用的ascii码,所以不支持直接打印中文,需要在脚本开头指定字符集:# -*- encoding:utf-8 -*-

        Python 3.X的默认编码是采用的utf8的编码,支持中文

 

        Python2在编译安装时,可以通过参数:--enable-unicode=ucs2 或:--enable-unicode=ucs4分别用于指定使用2个字节、4个字节表示一个unicode字符;

        Python3无法进行选择,默认使用ucs4,查看当前Python中表示unicode字符串占用得空间可以用:

                 import sys

                 print("sys.maxunicode")         #如果值是65535:则表示使用ucs2标准(2个字节表示),如果值是1114111:则表示使用ucs4标准(4个字节表示)

 

1、ascii码说明:

        ascii码以二进制的形式体现,占一个字节、8个bit位(计算机初始),ascii码只能显示英文,特殊字符,数字;

       1980年:关于中文(GB2312(支持七千多个汉字)、GBK(支持两万多汉字:显示中文占一个字节,显示英文时占两个字节));

       国际标准组织整合各国的语言:万国码(Unicode)占两个字节,16个bit位(中英文都占两个字节),后因为中文太多了,无法完全显示,unicode升级后占4个字节32个bit

位(中英文都占四个字节);

       在unicode的基础上,西方人开发了utf-8字符编码,utf8改进了万国码(存英文字母还是占用1个字节、存欧洲文字占2个字节、存中文占用3个字节);

 

下面是单位换算的说明:

 1bit       8bit = 1bytes

1byte   1024byte = 1KB

1KB     1024kb = 1MB

1MB     1024MB = 1GB

1GB     1024GB = 1TB