07 2012 档案

Python源代码文件的文本编码
摘要:源代码的编码问题对于任何语言的源文件都是存在的,只不过对于脚本语言,这个问题更突出一些。有的人可能会说,既然源代码在文本编辑器中可以正常显示,说明编码没有问题,编辑器可以识别它,为什么Python还要求声明源代码的编码呢?这是因为,明确地声明编码可以简化Python解释器的实现,免得它去猜测源文件的编码,这样既会增加解释器的复杂性,也会减慢程序的执行速度(毕竟是解释执行)。况且,程序运行必须是精确的,不能靠猜测。从Python 2.3开始,可以在Python源文件中明确地声明字符编码,默认是7-bit ASCII编码。字符编码声明是以在源文件第一行或者第二行出现的一个魔法注释来实现的:# co 阅读全文

posted @ 2012-07-22 01:46 frydsh 阅读(3922) 评论(0) 推荐(0)

Python的词法分析与语法分析
摘要:词法分析(Lexical Analysis):分析由字符组成的单词是否合法,如果没有问题的话,则产生一个单词流。语法分析(SyntacticAnalysis):分析由单词组成的句子是否合法,如果没有问题的话,则产生一个语法树。在词法分析器分析源代码文本的时候,有一个概念需要明确:1.物理行:由回车字符序列(在Windows上是CR LF,在Unix上是LF)结尾的字符序列组成一个物理行。2.逻辑行:由一个或者多个物理行组成,可以明确地使用反斜杠(\)来连接多个物理行使之成为一个逻辑行;或者,处在圆括号,中括号,花括号内的表达式可以跨越多个物理行,但是被当作一个逻辑行。词法分析器是面向逻辑行的, 阅读全文

posted @ 2012-07-15 17:20 frydsh 阅读(13042) 评论(0) 推荐(0)

Python的几种实现
摘要:Python自身作为一门编程语言,它有多种实现。这里的实现指的是符合Python语言规范的Python解释程序以及标准库等。这些实现虽然实现的是同一种语言,但是彼此之间,特别是与CPython之间还是有些差别的。下面分别列出几个主要的实现。1.CPython:这是Python的官方版本,使用C语言实现,使用最为广泛,新的语言特性一般也最先出现在这里。 CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。2.Jython:这是Python的Java实现,相比于CPython,它与Java语言之间的互操作性要远远高于CPython和C语言之间的互 阅读全文

posted @ 2012-07-12 23:15 frydsh 阅读(12833) 评论(1) 推荐(0)

Python的Boolean操作
摘要:在Python中,任何类型的对象都可以做真值测试,并且保证返回True或者False。以下几种值(不论类型)在真值测试中返回False:1.None2.False3.任何类型的数字0,包括0,0.0,0L,0j4.空的序列(sequence)或者映射(mapping)类型对象5.对于用户自定义类型的对象,如果其类定义了__nonzero__()或者__len__()特殊方法并且返回False或者0对于最后一条规则,有几点需要说明:1.如果类没有定义这两个方法中的任何一个,则这种类型的对象真值测试时总是为True2.如果类同时定义了__nonzero__()和__len__(),只会参考__no 阅读全文

posted @ 2012-07-11 13:59 frydsh 阅读(33062) 评论(0) 推荐(1)

Python的zip函数
摘要:zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:1.示例1:x = [1, 2, 3]y = [4, 5, 6]z = [7, 8, 9]xyz = zip(x, y, z)print xyz运行的结果是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]从这个结果可以看出zip函数的基本运作方式。2.示例2:x = [1, 2, 3]y = [4, 5, 6, 7]xy = zip(x, y)print xy运行的结果是:[(1, 4), (2, 5), (3, 6)]从这个结果可以看出zip函数的长度处理方 阅读全文

posted @ 2012-07-10 22:12 frydsh 阅读(242031) 评论(15) 推荐(57)

导航