码迷,mamicode.com
首页 > 编程语言 > 详细

Python Day01

时间:2016-01-13 17:38:51      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

Python 代码执行流程:

  •   编译 --> 执行
  •   源代码  -->  字节码  -->  机器码  --> CPU执行

python 先将自己的源代码,编译成Python 字节码,不同语言的字节码,只有对应的编译器可以识别,运行时再将字节码转换成机器码在执行,经过了现两个转换的步骤,所以比 C 语言要慢一个量级。

 

Python 的几种实现:

python 作为一种编程语言,它有多种实现。这里的实现指的是符合Python语言规范的Python解释程序以及标准库等。这些实现虽然实现的是同一种语言,但是彼此之间,特别是与CPython之间还是有些差别的。

1、CPythonPython的官方版本,使用C语言实现,使用最为广泛,新的语言特性一般也最先出现在这里。
    C 语言实现的 python  -->  C 解释器  -->  .pyc(字节码)  --> 机器码  --> CPU执行

2、Jpython:这是Python的Java实现,相比于CPython,它与Java语言之间的互操作性要远远高于CPython和C语言之间的互操作性。

    java 实现的 python  -->   java 解释器 -->  java字节码  -->  机器码  -->  CPU执行

3、Python for .NET:它实质上是CPython实现的.NET托管版本,它与.NET库和程序代码有很好的互操作性。
4、IronPython:不同于Python for .NET,它是Python的C#实现,并且它将Python代码编译成C#中间代码(与Jython类似),然后运行,它与.NET语言的互操作性也非常好。

5、PyPy:Python的Python实现版本,原理是这样的,PyPy运行在CPython(或者其它实现)之上,用户程序运行在PyPy之上。它的一个目标是成为Python语言自身的试验场,因为可以很容易地修改PyPy解释器的实现(因为它是使用Python写的)。

    python 源代码   -->  py解释器  -->    字节码、机器码(编译过程中就已经生成机器码)  --> CPU 执行

Python 执行过程:

  1.   语法分析 (检测你的语法是否有问题)
  2.   词法分析( 说明代码写的没问题)
  3.   编译代码(遇到函数与类解释的方式不同,生成字节码)
  4.   执行(转换成机器码)

  Python 运行后,原目录下会生成 .pyc(Python 编译后生成的专有字节码文件) 可用工具反解。
  Python 执行时会优先找 .pyc 文件,当没有 .pyc 会先执行 py 生成字节码,如果 py 文件被修改过,与 .pyc 文件中的内容不符,Python 会重新编译生成 .pyc 并替换。

字符集与字符编码:

  1.字符集:

  •     字符是各种文字和符号的总称,包括各个国家文字、标点符号、图形符号、数字等。字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。
  •     常见字符集有:ASCII字符集、ISO 8859字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。
  •     计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

  2.编码(encoding):

  •   编码(encoding)与字符集不同。字符集只是字符的集合,不一定适合作网络传送、处理,有时须经编码(encode)后才能应用。
  •   如Unicode可依不同需要以 UTF-8、UTF-16、UTF-32等方式编码。
  •   字符编码就是以二进制的数字来对应字符集中的字符。

  使用哪些字符。也就是说哪些汉字,字母和符号会被收入标准中。所包含“字符”的集合就叫做“字符集”。
  规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码”。

常用字符编码:

ASCII:

  •    (American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本EASCII则可以勉强显示其他西欧语言。它是现今最通用的单字节编码系统(但是有被UniCode追上的迹象)
  •     ASCII 采用 7 位或 8 位 二进制数组合来表示 128 或 256 种可能出现的字符,在计算机没有大规模发展时,128位足以表示英文字符与数字,但后期计算机经过广泛发展,在世界的各个角落流行起来,采取传统的 8 位二进制数最多只能表示  256 种字符变化,对于纯英文来说足够,但是并不适于其它国家的语言,,已经不能满足其它国家对字符的表示需求。

Unicode:

  万国码,它至少采用 2byte 来表示字符,表示范围是世界上各个国家的字符,范围很大,比如,汉字“严”的unicode是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。 

这就会出现两个严重的问题:

  如何才能区别unicode和ascii?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0来填充,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。 

它们造成的结果是:

  1.     出现了unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示unicode。
  2.   unicode在很长一段时间内无法推广,直到互联网的出现。 

Unicode:

互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,但只有 UTF-8 被广泛使用,注意:UTF-8是Unicode的实现方式之一。 

  • UTF-8最大的一个特点,它是一种变长的编码方式。它可以使用1~4个字节表示一个字符,根据不同的字符而变化字节长度,避免了 Unicode 中浪费磁盘空间的问题。 

GBK:

  • 专属用来表示中文的一种字符编码。

 

Python 编码:

  • python 2.x 默认采用 Unicode 编码格式,让人非常头疼的问题就是编码问题。
    •   如果想让 Python 支持中文字符需要在文件顶部声明编码格式为:utf-8
      •   
        #-*- coding:utf-8 -*-
  • python 3.x 默认采用 UTF-8 编码格式,原生支持中文。

 

Python Day01

标签:

原文地址:http://www.cnblogs.com/jayy/p/5127681.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!