一、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