Python3程序开发指南(第二版)pdf
内容提要
Python是一种脚本语言,在各个领域得到了日益广泛的应用。本书全面深入地对
thon语言进行了讲解。
本书首先讲述了构成Python语言的8个关键要素,之后分章节对其进行了详尽的
阐述,包括数据类型、控制结构与函数、模块、文件处理、调试、进程与线程、网络
数据库、正则表达式、GUI程序设计等各个方面,并介绍了其他一些相关主题。全书
内容以实例讲解为主线,每章后面附有练习题,便于读者更好地理解和掌握所讲述的
内容。
本书适合于作为Python语言教科书使用,对Python程序设计人员也有一定的参
考价值。
www.topsage.com
在应用广泛的各种语言中,Python或许是最容易学习和最好使用的。Python代码
很容易阅读和编写,并且非常清晰,而没有什么隐秘的。Python是一种表达能力非常
强的语言,这意味着,在设计同样的应用程序时,使用Python进行编码所需要的代码
量要远少于使用其他语言(比如C+或Java)的代码量
Python是一种跨平台的语言:一般来说,同样的Python程序可以同时在Windows
平台与UNX类平台(比如Linux、BSD与Macosx)上运行—只需要将构成Python
程序的单个或多个文件复制到目标机器上,而不需要“构建”或编译(Python是解释
型语言)。当然,Python程序使用特定平台功能也是可能的,但通常很少需要这样做,
因为几乎所有Python标准库与大多数第三方库都是完全跨平台的,或至少对用户是透
明的。
Python的强大功能之一是带有一个非常完全的标准库,通过该标准库,我们可以
方便地实现大量功能,比如,从Internet下载一个文件、对压缩的存档文件进行解压,
或创建一个Web服务器,而这些貌似复杂的功能,只需要少数几行Python代码就可
以实现。除标准库外,还有数以千计的第三方库,其中一些提供了比标准库更强大
更复杂的功能,比如,Twisted网络库与NumPy数值型库。其他一些库提供了极专业
化的功能,因而没有包含在标准库中,比如,SimPy模拟包。大多数第三方库都可以
通过PythonPackageIndex,网址为htp:ypi.python.org/pypi进行访间
虽然本质上是一种面向对象语言,但是实际上Python可以用于进行过程型程序设
计、面向对象设计,以及某种程度上的函数型程序设计。本书主要展示如何使用Python
进行过程型程序设计与面向对象程序设计,也介绍了Python的函数型程序设计功能。
本书的目标是展示如何使用良好的Python3惯用风格编写Python程序,在阅读本
书之后,你就可以发现,本书是一本非常有用的Python3语言索引。虽然与Python2
相比,Python3所做的改进和改变是渐进的,而非革新,但是在Python3中,Python2
中的一些既有做法变得不再合适或不再必要,因此必须介绍和使用Python3中的一些
新做法,以便充分利用Python3的功能。毋庸置疑,Python3优于Python2;它构建
于Python2多年的实践基础上,并添加了大量的新功能(还摒弃了Pyhn2的一些不
良特性)。与Python2相比,使用Python3更富于乐趣,更便利、容易和具有一致性。
本书旨在讲解Python语言息电楼滥及很多标准Python),但是没有
前言
全部介绍。不过这不是问题,因为在阅读本书之后,将具备充分的Python知识,读者
可以自如地使用任意的标准库或任意第三方库,并可以创建自己的库模块。
本书适用于多种不同类型的读者,包括自学者、程序设计爱好者、学生、科学家、m
工程师,以及工作中需要进行程序设计的人,当然,也包括计算专业工作者和计算机
科学家。要面对这些不同类型的读者,既让已具备丰富知识的读者不厌烦,又让经验
不足的读者可以理解,因此,本书假定读者至少具备一定的程序设计经验(任何程序
语言)。特别是,本书需要读者了解数据类型(比如数与字符串)、集合数据类型(比
如集合与列表)、控制结构(比如与whle语句)以及函数。此外,有些实例与练习
需要读者具备HTMLmarkup的相关知识,后面某些更专业化的章节需要读者具备一
定领域的知识,比如,数据库那一章需要读者具备基本的SQL知识。
在结构上,本书尽可能让读者阅读时最富有效率。在第1章结束时,读者应该就
可以编写短小但有用的Python程序。后续的每一章都分别讲述一个新主题,在内容上
通常都会比前一章更广、更深。这意味着,如果顺序阅读本书各章,在每一章结束后,
都可以停止阅读,并利用该章讲解的知识编写完整的Python程序,当然,你也可以继
续阅读以便学习更高级、更复杂的技术。出于这一考虑,有些主题在某一章中介绍,
在后续的一章或几章中又进行了深入讲解。
讲解一门新的程序设计语言时,有两个关键的问题。第一个问题是:有时候,需要讲
解某个特定概念时,会发现该概念依赖于另外一个概念,而这个概念反过来又直接或间接
地依赖于这个“特定概念”第二个问题是:在最开始的时候,由于读者对该语言毫无所
知,或者只具备极为有限的知识,因此要给出有趣的、有用的实例或练习非常困难。在本
书中,我们力图解决这两个问题。对第一个问题,首先要求读者具备一定的程序设计经验,
了解基本的概念;对第二个问题,我们在第1章中就讲解了Python的“beautifulheart”
Python的8个关键要素,足以用于编写良好的程序。这种做法也有一个不足的地方:
在前几章中,有些实例在风格上会有一点刻意为之的痕迹,这是因为这些实例中只是使用
了到该章为止所讲解的知识,不过这种副作用越到后面的章节越弱,到第7章结束时,所
有实例都使用完全自然的Python3惯用风格编写。
本书所讲述的方法是完全实践型的,我们建议读者尝试书中讲述的每个实例,做
好每一个练习,以便获取实际的动手经验。在可能的地方,本书都提供了虽然短小但
是完整的程序,这些程序实例展现了真实的应用场景。本书所带实例、练习及其解决
方案都可以在www.trac.eu/py3bookhtm处获取,并且都已经在Windows、Linux、
Macosⅹ等操作平台上的Python3环境下进行了测试。
本书的组织结构
第1章,提出了Python的8个关键要素,这些要素足以用于编写完整的Python
www.topsage.com
前言
程序。本章描述了一些可用的Python程序设计环境,给出了两个小实例,这两个实例
都是使用前面讲述的8个关键要素构建的。
第2章~第5章介绍了Python的过程型程序设计功能,包括基本数据类型与集合
数据类型、很多有用的内置函数与控制结构,以及比较简单的文本文件处理功能。第
5章展示了如何创建自定义模块与包,并提供了Python标准库概览,以便读者对Python
提供的功能有充分的了解,避免重复工作
第6章对使用Python进行面向对象程序设计进行了全面深入的讲解。由于面向对
象程序设计是建立在过程型程序设计基础之上的,因此,此前几章讲述的过程型程序
设计相关的知识仍然可以用于面向对象程序设计,比如,利用同样的数据类型、集合
数据类型以及控制结构
第7章主要讲述文件的读、写。对于二进制文件,包括压缩、随机存取;对于文
本文件,包括人工分析以及正则表达式的使用。本章也包括了如何读、写XML文件,
包括使用元素树、DOM(文档对象模型)以及SAX(用于ⅩML的简单APⅠ)。
第8章回顾了前面一些章节中讲述的内容,探讨了数据类型、集合数据类型、
控制结构、函数、面向对象程序设计等领域一些更高级的内容。本章还介绍了很多
新功能、类以及高级技术,包括函数型程序设计——其中的内容有挑战性,但也很
有用
第9章与其他章节的不同之处在于,它不是介绍新的Python特性,而是讨论了用
于调试、测试和profiling程序的技术和库。
余下的几章讲述了其他一些高级主题。第10章展示了如何将程序的工作负载分布
在多个进程与线程上;第11章展示了如何使用Python的标准网络支持功能编写客户
端/服务器应用程序;第12章讲解了数据库程序设计(包括键值对DBM文件与SQL
数据库);第13章讲述了Python的正则表达式mini-language,介绍了正则表达式模块;
第14章讲解使用正则表达式,以及使用两种第三方模块(PyParsing和PLY)的解析
技术;第15章介绍了GUI(图形用户界面)程序设计。
本书的大部分章都较长,这样是为了将所有相关资料放在一起,以便于查询引用,
不过,各章都进一步划分为节、小节,因此,本书仍然是可以按照适合自己的节奏阅
读的,比如,每次阅读一节或一个小节
获取并安装Python3
如果使用的是较新版本的Mac或UNX类系统并及时更新,就应该已经安装了
Python3。要检查是否已经安装,可以在控制台(在MacOSX上是Terminal.app)中
输入命令pythonV(注意是大写的V),如果版本为3X,就说明系统中已经安装了
Python3,而不需要自己再安装,如果不是,请继续阅读。
www.iopsage.com
前言
I
对Windows与Macosⅹ系统,存在易于使用的图形界面安装包,只需要按照提
示就可以一步一步地完成安装过程。安装工具包可以从www.python.org/download处获
取,该网站为Windows系统提供了3个独立的安装程序,一般需要下载的是普通的
“Windows×86MSIInstaller”,除非确认自己的机器使用的是AMD64或Itanium处理
器,这种情况需要下载处理器特定的安装程序。下载安装程序后,只需要运行并按提
示进行操作,就可以安装好Python3。
对Linux、BSD以及其他UNⅨX类系统,安装Python的最简单方法是使用该操作
系统的软件包管理系统。大多数情况下,Python安装程序是以几个单独的软件包形式
提供的。比如,在Fedora中,用于Python的安装包为python,用于IDLE(一个简单
的开发环境)的安装包为python-tools。需要注意的是,只有在Fedora为更新的版本
时(版本10或后续版本),这些安装包才是基于Python3的。同样,对基于Debian
的系统,比如Ubun如u,对应的安装包为python3与jdle3
如果没有适合自己操作系统的安装包,就需要从www.python.org/download处下载
源程序,并从头编译Python。你可以下载sourcetarballs中的任意一个,并根据其文件
格式选择不同的工具进行解压:如果下载的是gzippedtarball,则需要使用tarxvfz
Python-3.0gz;如果下载的是bzip2tarball,则需要使用tarxvf]Python-30ta:bz2。配
置与构建过程是标准的,首先切换到新创建的Python-3.0目录,运行onfigure(如果
需要本地安装,可以使用-prefix选项),之后运行make
安装Python3时,可能出现的一种情况是,在安装结束时弹出提示消息,声称不
是所有的模块都已经安装,这通常意味着机器上缺少某些必要的库或头文件。这种情
况可以通过单独安装相应程序包处理,比如,如果readline模块无法构建,可以使用
包管理系统安装相应的开发库,如在基于Fedora的系统上安装readline-devel,在基于
Debian的系统上安装readline-dev(遗憾的是,相关包的名字并不总是那么显而易见
的)。安装了缺少的包之后,再次运行/configure与make
成功构建之后,可以运行maketest,以便确认是否一切正常——尽管这并非必需,
并且可能需要花费一些时间。
如果使用了-prefix进行本地安装,那么只需要运行makeinstall你可能需要为
python可执行程序添加软链接(如果使用的是-pref=$HOME/local/python3,并且
PATH中包含SHOME/bin目录,则需要lns~local/python3/Din/python.3.0~/bin/py
thon3),为DDE添加软链接也会带来不少方便(假定前提与上面的一样,则需要ln-s
local/python3/bin/idle-/bin/idle3)
如果不使用-prefix并具备root权限,应该以root用户登录,并执行makeinstall
在基于sudo的系统(比如ubuntu)上,则执行sudomakeinstall如果系统上已经存
在Python2,usr/bin/python并不会改变,同时Python3将以python3的形式存在,同
样地,Python3的DLE以jl3的形式存在
www.topsage.com
前言
致谢
首先感谢读者对本书第一版的反馈,他们在反馈中给出了修改意见和建议
其次要感谢的是本书的技术评审Jasminblanchette,他是一位计算机科学家、程
序员,我们曾共同编写过两本C艹+Qt书籍。Jasmin对章节布局的规划、对所有实例
的建议与批评以及对本书的详细审阅,这一切都极大地提高了本书的质量
Georgbrandi是一位一流的Python开发人员,也是一位负责创建Python的新文档
工具链的文档编辑。Georg挑出了很多微妙的错误,并非常耐心、非常坚持地对其进
行解释,直至可以被准确理解和纠正。他还对很多实例进行了改进。
PhilThompson是一位Python专家,也是PyQt(可能是可用的PythonGU库中最
好的)的创建者。Phil的敏锐洞察力,有时候甚至是带有挑战性的反馈,都促使我对
本书的很多内容进行了澄清和纠正。
Trentonschulz是Nokia的QtSoftware(以前的Trolltech)部门的一位高级软件工
程师,也是我以前撰写的所有书籍的有见地的评审,在本书的评审编辑中又一次给予
了我宝贵的帮助。Trenton对本书的细致阅读与提出的大量宝贵建议,帮助我澄清了很
多问题,在很大程度上提高了本书质量
除上面提及的各位评审人员之外(他们都读完了整本书),Davidboddie,nokia
的QtSoftware的一位高级技术作者,也是一位经验丰富的Python老手和开源软件开
发者,阅读了本书的部分章节并给出了有价值的回馈。
同时也要感谢Guidovanrossum,Python的创建者,感谢大量的Python社区,是
他们的努力,使得Python(尤其是库文件)变得如此有用而好用。
还要感谢JeffKingston,Louttypesetting语言(我使用这种语言的时间超过10年)
的创建者。
特别感谢本书的编辑DebraWilliamsCauley,感谢她给予的支持,并再一次使得
本书的整个编辑、出版过程尽可能顺畅;感谢AnnaPopick,他将本书的生产过程管理
得非常好;感谢校对人员AudreyDoyle再一次做了良好的工作
最后也是最重要的是,感谢我的妻子Andrea,感谢她对我在凌晨4点起床,记录
下编写本书的灵感,以及对代码进行纠正和测试时,所表现出来的忍耐,以及她的爱、
忠诚和一如既往的支持。
www.topsage.com
计算机精品学习资料大放送
软考官方指定教材及同步辅导书下载|软考历年真是解析与答案
软考视频|考试机构|考试时间安排
Java一览无余:Java视频教程|Javase|Javaee
Net技术精品资料下载汇总:ASPNET篇
Net技术精品资料下载汇总:C#语言篇
Ne技术精品资料下载汇总:VBNET篇
撼世出击:C/C++编程语言学习资料尽收眼底电子书+视频教程
Visua|C++(Vc/MFC)学习电子书及开发工具下载
Perl/cGI脚本语言编程学习资源下载地址大全
Python语言编程学习资料(电子书+视频教程)下载汇总
最新最全Ruby、Rubyonrails精品电子书等学习资料下载
数据库精品学习资源汇总:MysL篇丨SQLServer篇丨Oracle篇
最强HTML/XHTML、CSS精品学习资料下载汇总
最新JavaScript、Ajax典藏级学习资料下载分类汇总
网络最强PHP开发工具+电子书+视频教程等资料下载汇总
UML学习电子资下载汇总软件设计与开发人员必备
经典LinuxcBT视频教程系列Linux快速学习视频教程一帖通
天罗地网:精品Linux学习资料大收集(电子书+视频教程)Linux参考资源大系
Linux系统管理员必备参考资料下载汇总
Linuxshel、内核及系统编程精品资料下载汇总
UNIX操作系统精品学习资料分类总汇
FreeBsD/OpenBSD/NetBsD精品学习资源索引含书籍+视频
Solaris/OpenSolaris电子书、视频等精华资料下载索引
目录
第1章过程型程序设计快速入门
。由自*自●4自普春◆命自自曲备曲音身专专中平等号平自号期寺
1创建并运行Python程序…
,2Python的关键要索…
5
121要素#1:数据类型……
122要素#:对象引用……
123要素#3:组合数据类型
……9
1.2.4元素#4:逻辑操作符
12
12.5要素#5:控制流语句
。●奇.。力非由·鲁是
……………………16
126要素#6:算术操作符………………………………
20
1.2.7要素#7:输入输出
23
128要素#8:函数的创建与调用
1.3实例
…………27
1.31bigdigits.py…
1.3.2generate_grid.py
鲁省省最鲁非
30
14总结
……∷………………………………………33
1.5练习
●●●垂看●是自身非音非谁
5
第2章数据类型
21标识符与关键字
…38
22Integral类型
··命·命···命看是有··非·非·早
221整数…
41
222布尔型…
23浮点类型
…44
23.1浮点数…………………45
232复数
23.3十进制数字…………
a普音非鲁音备备是日号。·
……………49
24字符串
d香如最dl‘lba日申自台申申申命申昏命曲
50
24.1比较字符串
53
242字符串分片与步距
54
243字符串操作符与方法
56
244使用strformatO方法进行字符串格式化…
●。垂非命自自非··。昨音
24.5字符编码
中···春·
鲁曲。。。e。·。●中中看甲甲寻身
5实例…
75
www.topsage.com
下载地址
用户评论