收藏 分享(赏)

Python基础教程(第3版)(#).pdf

上传人:jintaihu 文档编号:5709112 上传时间:2022-06-15 格式:PDF 页数:482 大小:10.32MB
下载 相关 举报
Python基础教程(第3版)(#).pdf_第1页
第1页 / 共482页
Python基础教程(第3版)(#).pdf_第2页
第2页 / 共482页
亲,该文档总共482页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、 图灵社区的电子书没有采用专有客户端,您可以在任意设备上,用自己喜欢的浏览器和PDF阅读器进行阅读。 但您购买的电子书仅供您个人使用,未经授权,不得进行传播。 我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。? 内 容 提 要本书包括 Python 程序设计的方方面面:首先,从 Python 的安装开始,随后介绍了 Python 的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句;然后,循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器;此后,探讨了

2、如何将 Python 与数据库、网络、C 语言等工具结合使用,从而发挥出 Python 的强大功能,同时介绍了 Python 程序测试、打包、发布等知识;最后,作者结合前面讲述的内容,按照实际项目开发的步骤向读者介绍了 10 个具有实际意义的 Python 项目的开发过程。本书内容涉及的范围较广,既能为初学者夯实基础,又能帮助程序员提升技能,适合各个层次的Python 开发人员阅读参考。定价:99.00元读者服务热线:(010)51095186转600印装质量热线:(010)81055316反盗版热线:(010)81055315广告经营许可证:京东工商广登字 20170147 号著挪 Magn

3、us Lie Hetland译袁国忠责任编辑杨琳责任印制彭志环人民邮电出版社出版发行北京市丰台区成寿寺路11号邮编100164电子邮件网址http:/北京印刷开本:80010001/16印张:29.75 字数:703千字2018年 2 月第 3 版印数:223 001 231 000册 2018年 2 月北京第 1 次印刷著作权合同登记号 图字:01-2017-4043号 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!错误!文档中没有指定样式的文字。错误!文档中没有指定样式的文字。 1 1 2 3 4 5 8 10

4、11 9 6 7 版 权 声 明Original English language edition, entitled Beginning Python: From Novice to Professional, Third Edition by Magnus Lie Hetland, published by Apress, 2855 Telegraph Avenue, Suite 600, Berkeley, CA 94705 USA. Copyright 2017 by Magnus Lie Hetland. Simplified Chinese-language edition cop

5、yright 2018 by Posts & Telecom Press. All rights reserved. 本书中文简体字版由Apress L. P.授权人民邮电出版社独家出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。 版权所有,侵权必究。 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!2 致谢 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!引 言 1 1 2 3 4 5 8 10 11 9 6 7 前 言巨蟒剧团有

6、首老歌唱道: “又来了一个,它走了又来。又来了一个,什么时候是个头?”自本书第2版面世以来,Python 3的普及程度得到了极大提高,因此这一版完全转向了Python 3。在此期间,还有其他的变化:在Python生态系统中,各种包轮番登场,各种编码实践大行其道后又日渐式微。在必要之处或对读者有帮助的前提下,本书的有些部分完全重写,但最初的痕迹还依稀可见。例如,本书前身Practical Python于21世纪初出版时,Usenet依然应用广泛,可现在大多数互联网用户可能从未听说过它。因此,对于第23章创建连接到NNTP服务器的项目,与其说是为了介绍主流编程生涯中将用到的编程技能,不如说是让读者

7、了解一下历史。一些比较古怪的内容也依旧保留,因为它们是很不错的编程示例,也是本书悠长历史的见证。 与以往一样,我要深深地感谢让本书以前各版得以付梓的人。这里我要特别感谢Mark Powers,感谢他在我进度缓慢时极具耐心。还要感谢Michael Thomas,感谢他出色的技术审阅工作(并指出了原稿中所有的Python 2式print语句) 。但愿你喜欢全新升级后的这一版。正如Terny Jones在提到那首老歌时所说: “显然,有一个完整的管弦乐队会更好。 ” 第 2 版前言 新版的Python基础教程终于和大家见面了。如果算上本书的前身Practical Python,实际上这已经是第3版了

8、。这是我将近10年心血的结晶。在此期间,Python发生了很多有趣的变化,我也尽力调整了对这门语言的介绍。 当前, Python处于长期以来最为翻天覆地的转变期: Python 3推出。编写本书期间,最终版本还未发布,但其包含的功能已确定,还推出了多个可用的版本。这次修订不向后兼容,这是我编写这一版时面临的最大挑战。换而言之,我不能仅仅挑出一些新增的功能进行介绍。另外,它还修改了一些既有的功能,因此有些在Python 2.5中理所当然的事情在新版本中已不再正确。 倘若整个Python社区都立即转向Python 3并修改所有的遗留代码,那根本不成问题。我只需介绍Python 3就行!然而,目前依

9、然存在大量用Python 2编写的代码,而且大家可能还会继续编写这样的代码,直到有一天所有人都认为应使用Python 3。 那么我是如何应对这种变化的呢?首先,虽然有些向后兼容的变化,但Python语言本身总体变 Monty Python,英国的一个超现实幽默表演团体,喜剧界的披头士,在20世纪70年代风靡全球。Python语言的命名来源于此。编者注 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!2 前 言 化不大。因此,如果完全针对Python 2.5,编写的内容对Python 3来说也是大体正确的(对Python

10、 2.6来说更是如此) 。至于那些不再正确的部分,我采取了比较保守的态度,因为大家完全接受Python 3还需要一段时间。因此,这一版主要是基于Python 2.5编写的,同时指出将会改变的情形。另外,我还提供了附录D,让你对重大变化有大致的了解。对大多数读者来说,这样处理是完全可行的。 编写这一版期间, 有几个人帮了我很大的忙。 与前两版 (本书第1版以及之前的Practical Python)一样, Jason Gilmore扶我上马, 并在项目启动期间扮演了重要角色。 项目启动后, Richard Dal Porto、Frank Pohlmann和Dominic Shakeshaft不断

11、伸出援手,保证项目得以顺利进行。在确保代码正确方面,Richard Taylor居功至伟(倘若代码依然存在错误,责任在我) ,而Marilyn Smith出色地完成了手稿润色工作。这里还要感谢Apress出版社的其他工作人员,他们是Liz Berry、Beth Christmas、Steve Anglin和Tina Nielsen。另外,感谢包括Bob Helmbold和Waclaw Kusnierczyk在内的读者提出勘误和宝贵的建议。 最后, 在本书前两版的出版过程中, 很多人都提供了帮助, 这里衷心地感谢他们。 第 1 版前言 几年前,Jason Gilmore找到我,让我为Apress

12、出版社写本书。他看了我撰写的Python在线教程,想让我写一本风格类似的书。我受宠若惊,既兴奋又有点紧张。我最关心的是,这需要多长时间、对学业会有多大的影响,因为当时我正在读博士。结果表明,这是一项非常艰巨的任务,花费的时间远远超出了预期。 所幸这对我的学业没有太大的影响,我按时获得了博士学位。 去年, Jason又找到我说, Apress出版社想让我对原书进行修订和扩充, 不知道我是否有兴趣。当时我正忙于熟悉新取得的副教授职位,而业余时间都花在了扮演Peer Gynt上,因此时间依然是主要的问题。事情安排妥当并有更多业余时间后,我接受了这项任务。你可能猜到了,最终的结晶就是你现在手捧的这本书

13、。本书的大多数内容都来自Practical Python,但基于Python的最新变化做了全面修订, 同时新增了几章。 另外, 根据这一版的组织结构, 调整了原来一些内容的位置。很多读者对Practical Python提供了积极的反馈,但愿本版保留了读者喜欢的内容,同时新增的内容也能得到读者青睐。 本书编写期间,有几个人不断地给予我帮助和鼓励。没有他们,本书根本不可能付梓。这里对他们表示衷心的感谢。感谢本书编写期间直接与我协作的团队:Jason Gilmore让这个项目得以上马并确保不偏离方向;Beckie Stones整理各种材料;Jeremy Jones和Matt Moodie提供了专业

14、的意见和见解;Linda Marousek对我极具耐心;还有其他成员让本书得以顺利出版。如果没有Practical Python打下的基础,本书不会是现在这个样子。这里要感谢Jason Gilmore和Alex Martelli出色的技术编辑工作(Jason负责全书,Alex负责前半部分)以及本职之外的各种意见和建议。感谢Erin Mulligan和Tory McLearn一路上领我前行,并在需要时让我调整方向。感谢Nancy Rapoport对手稿进行润色。感谢Grace Wong回答他人无法回答的问题。感谢Pete Shinners就项目10的游戏提供宝贵的建议。感谢多位读者的来信,这些来

15、信给了我极大的鼓励!最后,感谢我的家人和朋友,尤其是女朋友Ranveig在本书编写期间给予的宽容。 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!引 言 1 1 2 3 4 5 8 10 11 9 6 7 引 言C程序犹如拿着剃刀在刚打过蜡的地板上劲舞。 Waldi Ravens C+学起来很难,因为它天生如此。 佚名 Java从很多方面来说,就是简化版的C+。 Michael Feldman 接下来请欣赏与众不同的表演。 巨蟒剧团之飞翔的马戏团 前面引用了别人的几句话,旨在为本书定下基调,就是不那么严肃正式。为让本

16、书阅读起来轻松愉快,我力图以幽默的方式来讨论Python编程这个主题。幽默是Python社区的传统,而这种幽默在很大程度上与巨蟒剧团的短剧相关。 因此, 本书的有些示例看起来有点傻, 但愿你能容忍。顺便说一句,Python来源于巨蟒剧团(Monty Python) ,而不是蟒蛇。 这里将简单地说说Python是什么,为何要使用它,有哪些人在使用它,本书为谁而写,并概述本书的组织结构。 Python是什么?为何要使用它?官方宣传说: Python是一种面向对象的解释性高级编程语言,具有动态语义。这句话中有很多术语,在阅读本书的过程中,你会逐渐了解其含义。这句话的要点在于,Python是一种知道如

17、何不妨碍你编写程序的编程语言。它让你能够毫无困难地实现所需的功能,还让你能够编写出清晰易懂的程序(与使用当前流行的其他大多数编程语言相比,编写出来的程序要清晰易懂得多) 。 虽然Python的速度可能没有C、C+等编译型语言那么快,但它能够节省编程时间。仅考虑到这一点就值得使用Python,况且对大多数程序而言,速度方面的差别并不明显。如果你是C语言程序员,那么你可轻松地使用C语言实现程序的重要部分,再将其与Python部分整合起来。如果你没有任何编程经验(并对我提及C和C+感到有点迷惑) ,那么简洁而强大的Python就是你进入编程殿堂的理想选择。 欢迎加入非盈利Py t h o n 学习交

18、流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!2 引 言 那么,有哪些人在使用Python呢?从Guido van Rossum于20世纪90年代初创造这门语言起,其追随者就在不断增加,最近几年尤其如此。Python广泛用于完成系统管理任务(例如,它是多个Linux发行版的重要组成部分) ,也被用来向新手介绍编程。NASA使用它来完成开发工作,并在多个系统中将其用作脚本语言;工业光魔公司在预算庞大的故事片中使用Python来制作特效;Yahoo!使用它(以及其他技术)来管理讨论组;Google使用它实现了网络爬虫和搜索引擎的众多组件。Python还被用于计算

19、机游戏和生物信息等众多领域。不久后可能就会有人问:有谁不使用Python呢? 本书是为有志于学习Python编程的人写的,适合从编程门外汉到计算机高手的各种读者阅读。如果你没有任何编程经验,应从第1章开始阅读,阅读到看不懂的内容后,开始动手编写一些程序。等到条件成熟后,再回过头来继续阅读更复杂的内容。 如果你熟悉编程,对有些基础知识可能并不陌生(但书中会不时出现令你意外的细节) ,因此可大致浏览前几章,以便对Python的工作原理有大致认识。当然,也可通读附录A。它是根据Python在线教程“Instant Python”改编而来的,让你能够快速了解最重要的Python概念。对它有大致认识后,

20、可直接跳到第10章,去学习Python标准库。 本书的最后10章是10个编程项目, 展示了Python语言的各种功能。 无论你是初学者还是专家,都应该会对这些项目感兴趣。虽然对经验不那么丰富的程序员来说,最后几个项目理解起来有点难,但阅读本书的前半部分之后,完全能够按说明完成这些项目。 这些项目涉及众多主题,掌握这些主题对你自己动手编写程序大有裨益。你将学习如何完成一些现在看起来根本无法完成的任务,如创建聊天服务器、点对点文件共享系统和功能齐备的图形计算机游戏。这些任务乍一看好像很难,但最终你将发现,它们实际上大多容易得难以置信。如果你想下载源代码,可访问Apress网站(http:/)。 就

21、说这么多。冗长的引言总是让我觉得有点烦,现在就开始Python编程吧从第1章或附录A开始。祝你好运,编程愉快! 图灵社区本书页面也提供源代码下载: 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!目 录 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 17 目 录第 1 章 快速上手:基础知识 . 1 1.1 交互式解释器 . 1 1.2 算法是什么 . 2 1.3 数和表达式 . 3 1.4 变量 . 5 1.5 语句 . 5 1.6 获取用户输入 . 7 1.7 函数 . 8 1

22、.8 模块 . 8 1.8.1 cmath和复数 . 9 1.8.2 回到未来 . 10 1.9 保存并执行程序 . 10 1.9.1 从命令提示符运行 Python 脚本 . 12 1.9.2 让脚本像普通程序一样 . 12 1.9.3 注释 . 13 1.10 字符串 . 13 1.10.1 单引号字符串以及对引号 转义 . 14 1.10.2 拼接字符串 . 15 1.10.3 字符串表示str和repr . 15 1.10.4 长字符串、原始字符串和 字节 . 16 1.11 小结 . 21 1.11.1 本章介绍的新函数 . 21 1.11.2 预告 . 22 第 2 章 列表和元组

23、 . 232.1 序列概述 . 23 2.2 通用的序列操作 . 24 2.2.1 索引. 24 2.2.2 切片. 26 2.2.3 序列相加 . 28 2.2.4 乘法. 28 2.2.5 成员资格 . 29 2.3 列表:Python 的主力 . 31 2.3.1 函数list . 31 2.3.2 基本的列表操作 . 31 2.3.3 列表方法 . 33 2.4 元组:不可修改的序列 . 38 2.5 小结 . 39 2.5.1 本章介绍的新函数 . 40 2.5.2 预告. 40 第 3 章 使用字符串 . 413.1 字符串基本操作 . 41 3.2 设置字符串的格式:精简版 .

24、41 3.3 设置字符串的格式:完整版 . 43 3.3.1 替换字段名 . 43 3.3.2 基本转换 . 44 3.3.3 宽度、精度和千位分隔符 . 45 3.3.4 符号、对齐和用 0 填充 . 46 3.4 字符串方法 . 48 3.4.1 center . 48 3.4.2 find . 48 3.4.3 join . 49 3.4.4 lower . 50 3.4.5 replace . 51 3.4.6 split . 51 3.4.7 strip . 51 3.4.8 translate . 52 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里

25、免费提供500+本Py t h o n 书籍!2 目 录 3.4.9 判断字符串是否满足特定的 条件 . 52 3.5 小结 . 53 3.5.1 本章介绍的新函数 . 53 3.5.2 预告 . 53 第 4 章 当索引行不通时 . 54 4.1 字典的用途 . 54 4.2 创建和使用字典 . 55 4.2.1 函数dict . 55 4.2.2 基本的字典操作 . 55 4.2.3 将字符串格式设置功能用于 字典 . 57 4.2.4 字典方法 . 58 4.3 小结 . 63 4.3.1 本章介绍的新函数 . 63 4.3.2 预告 . 63 第 5 章 条件、循环及其他语句 . 64

26、 5.1 再谈print和import . 64 5.1.1 打印多个参数 . 64 5.1.2 导入时重命名 . 65 5.2 赋值魔法 . 66 5.2.1 序列解包 . 66 5.2.2 链式赋值 . 67 5.2.3 增强赋值 . 67 5.3 代码块:缩进的乐趣 . 68 5.4 条件和条件语句 . 69 5.4.1 这正是布尔值的用武之地 . 69 5.4.2 有条件地执行和if语句 . 70 5.4.3 else子句 . 70 5.4.4 elif子句 . 71 5.4.5 代码块嵌套 . 71 5.4.6 更复杂的条件 . 71 5.4.7 断言 . 75 5.5 循环 . 7

27、6 5.5.1 while循环 . 77 5.5.2 for循环 . 77 5.5.3 迭代字典 . 78 5.5.4 一些迭代工具 . 78 5.5.5 跳出循环 . 80 5.5.6 循环中的else子句 . 82 5.6 简单推导 . 83 5.7 三人行 . 84 5.7.1 什么都不做 . 84 5.7.2 使用del删除. 85 5.7.3 使用exec和eval执行字符串及计算其结果 . 86 5.8 小结 . 88 5.8.1 本章介绍的新函数 . 89 5.8.2 预告 . 89 第 6 章 抽象 . 90 6.1 懒惰是一种美德 . 90 6.2 抽象和结构 . 91 6.

28、3 自定义函数 . 91 6.3.1 给函数编写文档 . 92 6.3.2 其实并不是函数的函数 . 93 6.4 参数魔法 . 93 6.4.1 值从哪里来 . 94 6.4.2 我能修改参数吗 . 94 6.4.3 关键字参数和默认值 . 98 6.4.4 收集参数 . 100 6.4.5 分配参数 . 102 6.4.6 练习使用参数 . 103 6.5 作用域 . 105 6.6 递归 . 107 6.6.1 两个经典案例:阶乘和幂 . 108 6.6.2 另一个经典案例:二分查找 . 109 6.7 小结 . 112 6.7.1 本章介绍的新函数 . 113 6.7.2 预告 . 1

29、13 第 7 章 再谈抽象 . 1147.1 对象魔法 . 114 7.1.1 多态 . 115 7.1.2 多态和方法 . 116 7.1.3 封装 . 118 7.1.4 继承 . 119 7.2 类 . 119 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!目 录 3 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 17 7.2.1 类到底是什么 . 119 7.2.2 创建自定义类 . 120 7.2.3 属性、函数和方法 . 121 7.2.4 再谈隐藏 . 122 7.2.

30、5 类的命名空间 . 123 7.2.6 指定超类 . 124 7.2.7 深入探讨继承 . 125 7.2.8 多个超类 . 126 7.2.9 接口和内省 . 127 7.2.10 抽象基类 . 128 7.3 关于面向对象设计的一些思考 . 130 7.4 小结 . 130 7.4.1 本章介绍的新函数 . 131 7.4.2 预告 . 131 第 8 章 异常 . 132 8.1 异常是什么 . 132 8.2 让事情沿你指定的轨道出错 . 132 8.2.1 raise语句 . 132 8.2.2 自定义的异常类 . 133 8.3 捕获异常 . 134 8.3.1 不用提供参数 .

31、 134 8.3.2 多个except子句 . 136 8.3.3 一箭双雕 . 136 8.3.4 捕获对象 . 137 8.3.5 一网打尽 . 137 8.3.6 万事大吉时 . 138 8.3.7 最后 . 139 8.4 异常和函数 . 140 8.5 异常之禅 . 140 8.6 不那么异常的情况 . 142 8.7 小结 . 143 8.7.1 本章介绍的新函数 . 143 8.7.2 预告 . 143 第 9 章 魔法方法、特性和迭代器 . 1449.1 如果你使用的不是 Python 3 . 144 9.2 构造函数 . 145 9.2.1 重写普通方法和特殊的构造 函数 .

32、 146 9.2.2 调用未关联的超类构造函数 . 147 9.2.3 使用函数super . 148 9.3 元素访问 . 149 9.3.1 基本的序列和映射协议 . 150 9.3.2 从list、dict和str派生 . 152 9.4 其他魔法方法 . 153 9.5 特性 . 153 9.5.1 函数property. 154 9.5.2 静态方法和类方法 . 155 9.5.3 _getattr_、_setattr_等 方法 . 156 9.6 迭代器 . 157 9.6.1 迭代器协议 . 157 9.6.2 从迭代器创建序列 . 159 9.7 生成器 . 159 9.7.1

33、 创建生成器 . 159 9.7.2 递归式生成器 . 161 9.7.3 通用生成器 . 162 9.7.4 生成器的方法 . 162 9.7.5 模拟生成器 . 163 9.8 八皇后问题 . 164 9.8.1 生成器的回溯 . 164 9.8.2 问题. 165 9.8.3 状态表示 . 166 9.8.4 检测冲突 . 166 9.8.5 基线条件 . 166 9.8.6 递归条件 . 167 9.8.7 扫尾工作 . 169 9.9 小结 . 170 9.9.1 本章介绍的新函数 . 170 9.9.2 预告. 171 第 10 章 开箱即用 . 172 10.1 模块 . 172

34、 10.1.1 模块就是程序 . 172 10.1.2 模块是用来下定义的 . 174 10.1.3 让模块可用 . 176 10.1.4 包 . 177 10.2 探索模块 . 178 10.2.1 模块包含什么 . 178 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!4 目 录 10.2.2 使用help获取帮助 . 179 10.2.3 文档 . 180 10.2.4 使用源代码 . 181 10.3 标准库:一些深受欢迎的模块 . 181 10.3.1 sys . 181 10.3.2 os . 183 1

35、0.3.3 fileinput . 185 10.3.4 集合、堆和双端队列 . 186 10.3.5 time . 190 10.3.6 random . 192 10.3.7 shelve和json . 195 10.3.8 re . 198 10.3.9 其他有趣的标准模块 . 210 10.4 小结 . 211 10.4.1 本章介绍的新函数 . 212 10.4.2 预告 . 212 第 11 章 文件 . 213 11.1 打开文件 . 213 11.2 文件的基本方法 . 214 11.2.1 读取和写入 . 215 11.2.2 使用管道重定向输出 . 215 11.2.3 读

36、取和写入行 . 217 11.2.4 关闭文件 . 217 11.2.5 使用文件的基本方法 . 218 11.3 迭代文件内容 . 220 11.3.1 每次一个字符(或字节) . 220 11.3.2 每次一行 . 221 11.3.3 读取所有内容 . 221 11.3.4 使用fileinput实现延迟行迭代 . 221 11.3.5 文件迭代器 . 222 11.4 小结 . 223 11.4.1 本章介绍的新函数 . 223 11.4.2 预告 . 224 第 12 章 图形用户界面 . 225 12.1 创建 GUI 示例应用程序 . 225 12.1.1 初探 . 226 12

37、.1.2 布局 . 227 12.1.3 事件处理 . 228 12.1.4 最终的程序 . 229 12.2 使用其他 GUI 工具包 . 230 12.3 小结 . 231 第 13 章 数据库支持 . 232 13.1 Python 数据库 API . 232 13.1.1 全局变量 . 233 13.1.2 异常 . 234 13.1.3 连接和游标 . 234 13.1.4 类型 . 236 13.2 SQLite 和 PySQLite . 236 13.2.1 起步 . 237 13.2.2 数据库应用程序示例 . 238 13.3 小结 . 241 13.3.1 本章介绍的新函数

38、 . 241 13.3.2 预告 . 241 第 14 章 网络编程 . 24214.1 几个网络模块 . 242 14.1.1 模块socket . 242 14.1.2 模块urllib和urllib2 . 244 14.1.3 其他模块 . 246 14.2 SocketServer及相关的类 . 247 14.3 多个连接 . 247 14.3.1 使用SocketServer实现 分叉和线程化 . 249 14.3.2 使用select和poll实现 异步 I/O . 249 14.4 Twisted . 252 14.4.1 下载并安装 Twisted . 252 14.4.2 编

39、写 Twisted 服务器 . 253 14.5 小结 . 254 14.5.1 本章介绍的新函数 . 255 14.5.2 预告 . 255 第 15 章 Python 和 Web . 256 15.1 屏幕抓取 . 256 15.1.1 Tidy 和 XHTML 解析 . 257 15.1.2 Beautiful Soup . 261 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!目 录 5 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 17 15.2 使用 CGI 创建动态网页

40、 . 262 15.2.1 第一步:准备 Web 服务器 . 262 15.2.2 第二步:添加!#行 . 263 15.2.3 第三步:设置文件权限 . 264 15.2.4 CGI 安全风险 . 264 15.2.5 简单的 CGI 脚本 . 264 15.2.6 使用cgitb进行调试 . 265 15.2.7 使用模块cgi . 266 15.2.8 简单的表单 . 267 15.3 使用 Web 框架 . 269 15.4 Web 服务:更高级的抓取 . 270 15.4.1 RSS 和相关内容 . 270 15.4.2 使用 XML-RPC 进行远程 过程调用. 271 15.4.

41、3 SOAP . 272 15.5 小结 . 272 15.5.1 本章介绍的新函数 . 272 15.5.2 预告 . 272 第 16 章 测试基础 . 27316.1 先测试再编码 . 273 16.1.1 准确的需求说明 . 273 16.1.2 做好应对变化的准备 . 275 16.1.3 测试四步曲 . 275 16.2 测试工具 . 276 16.2.1 doctest . 276 16.2.2 unittest. 278 16.3 超越单元测试 . 280 16.3.1 使用 PyChecker 和 PyLint 检查源代码 . 280 16.3.2 性能分析 . 283 16

42、.4 小结 . 284 16.4.1 本章介绍的新函数 . 285 16.4.2 预告 . 285 第 17 章 扩展 Python . 28617.1 鱼和熊掌兼得 . 286 17.2 简单易行的方式:Jython 和 IronPython . 287 17.3 编写 C 语言扩展 . 289 17.3.1 SWIG . 291 17.3.2 手工编写扩展 . 294 17.4 小结 . 298 17.4.1 本章介绍的新函数 . 299 17.4.2 预告 . 299 第 17 章 程序打包 . 30018.1 Setuptools 基础 . 300 18.2 打包 . 302 18.3

43、 编译扩展 . 303 18.4 使用py2exe创建可执行程序 . 304 18.5 小结 . 304 18.5.1 本章介绍的新函数 . 305 18.5.2 预告 . 305 第 19 章 趣味编程 . 30619.1 为何要有趣 . 306 19.2 编程柔术 . 306 19.3 原型设计 . 307 19.4 配置 . 308 19.4.1 提取常量 . 308 19.4.2 配置文件 . 309 19.5 日志 . 311 19.6 如果你已不胜其烦 . 312 19.7 如果你想深入学习 . 312 19.8 小结 . 313 第 20 章 项目 1:自动添加标签 . 3152

44、0.1 问题描述 . 315 20.2 有用的工具 . 316 20.3 准备工作 . 316 20.4 初次实现 . 317 20.4.1 找出文本块 . 317 20.4.2 添加一些标记 . 318 20.5 再次实现 . 319 20.5.1 处理程序 . 320 20.5.2 处理程序的超类 . 320 20.5.3 规则 . 322 20.5.4 规则的超类 . 323 20.5.5 过滤器 . 323 20.5.6 解析器 . 323 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!6 目 录 20.5.

45、7 创建规则和过滤器 . 324 20.5.8 整合起来 . 327 20.6 进一步探索 . 331 第 21 章 项目 2:绘制图表 . 332 21.1 问题描述 . 332 21.2 有用的工具 . 332 21.3 准备工作 . 333 21.4 初次实现 . 333 21.4.1 使用 ReportLab 绘图 . 334 21.4.2 绘制折线 . 335 21.4.3 编写原型 . 335 21.5 再次实现 . 337 21.5.1 获取数据 . 337 21.5.2 使用LinePlot类 . 337 21.6 进一步探索 . 339 第 22 章 项目 3:万能的 XML

46、 . 34022.1 问题描述 . 340 22.2 有用的工具 . 341 22.3 准备工作 . 341 22.4 初次实现 . 343 22.4.1 创建简单的内容处理程序 . 343 22.4.2 创建 HTML 页面 . 345 22.5 再次实现 . 347 22.5.1 分派器混合类 . 347 22.5.2 将首部和尾部写入文件的方法以及默认处理程序 . 349 22.5.3 支持目录 . 349 22.5.4 事件处理程序 . 350 22.6 进一步探索 . 352 第 23 章 项目 4:新闻汇总 . 35323.1 问题描述 . 353 23.2 有用的工具 . 354

47、 23.3 准备工作 . 354 23.4 初次实现 . 354 23.5 再次实现 . 356 23.6 进一步探索 . 362 第 24 章 项目 5:虚拟茶话会 . 36424.1 问题描述 . 364 24.2 有用的工具. 364 24.3 准备工作 . 365 24.4 初次实现 . 366 24.4.1 ChatServer类 . 366 24.4.2 ChatSession类 . 367 24.4.3 整合起来 . 369 24.5 再次实现 . 371 24.5.1 基本的命令解释功能 . 371 24.5.2 聊天室 . 372 24.5.3 登录和退出聊天室 . 372

48、24.5.4 主聊天室 . 373 24.5.5 新的服务器 . 373 24.6 进一步探索. 378 第 25 章 项目 6:使用 CGI 进行远程 编辑. 379 25.1 问题描述 . 379 25.2 有用的工具. 379 25.3 准备工作 . 380 25.4 初次实现 . 380 25.5 再次实现 . 381 25.5.1 创建文件名表单 . 381 25.5.2 编写编辑器脚本 . 382 25.5.3 编写保存脚本 . 383 25.5.4 运行编辑器 . 384 25.6 进一步探索. 386 第 26 章 项目 7:自建公告板 . 387 26.1 问题描述 . 38

49、7 26.2 有用的工具. 387 26.3 准备工作 . 388 26.4 初次实现 . 389 26.5 再次实现 . 393 26.5.1 编写脚本 main.cgi . 394 26.5.2 编写脚本 view.cgi . 395 26.5.3 编写脚本 edit.cgi . 396 26.5.4 编写脚本 save.cgi . 398 26.5.5 尝试使用 . 399 26.6 进一步探索. 400 欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!目 录 7 2 3 4 5 6 7 8 9 10 11 12

50、 13 14 15 16 18 17 第 27 章 项目 8:使用 XML-RPC 共享文件 . 401 27.1 问题描述 . 401 27.2 有用的工具 . 402 27.3 准备工作 . 403 27.4 初次实现 . 403 27.4.1 实现简单的节点 . 403 27.4.2 尝试使用 . 408 27.5 再次实现 . 409 27.5.1 创建客户端界面 . 410 27.5.2 引发异常 . 410 27.5.3 验证文件名 . 411 27.5.4 尝试使用 . 415 27.6 进一步探索 . 415 第 28 章 项目 9:使用 GUI 共享文件 . 417 28.1

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 技术方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报