目录
第1部分 通用应用主题
第1章 正则表达式 2
1.1 简介/动机 3
1.2 特殊符号和字符 5
1.2.1 使用择一匹配符号匹配多个正则表达式模式 6
1.2.2 匹配任意单个字符 6
1.2.3 从字符串起始或者结尾或者单词边界匹配 7
1.2.4 创建字符集 8
1.2.5 限定范围和否定 8
1.2.6 使用闭包操作符实现存在性和频数匹配 9
1.2.7 表示字符集的特殊字符 10
1.2.8 使用圆括号指定分组 10
1.2.9 扩展表示法 11
1.3 正则表达式和Python语言 11
1.3.1 re模块:核心函数和方法 12
1.3.2 使用compile()函数编译正则表达式 13
1.3.3 匹配对象以及group()和groups()方法 14
1.3.4 使用match()方法匹配字符串 14
1.3.5 使用search()在一个字符串中查找模式(搜索与匹配的对比) 15
1.3.6 匹配多个字符串 16
1.3.7 匹配任何单个字符(.) 16
1.3.8 创建字符集([ ]) 17
1.3.9 重复、特殊字符以及分组 18
1.3.10 匹配字符串的起始和结尾以及单词边界 20
1.3.11 使用findall()和finditer()查找每一次出现的位置 21
1.3.12 使用sub()和subn()搜索与替换 22
1.3.13 在限定模式上使用split()分隔字符串 23
1.3.14 扩展符号 24
1.3.15 杂项 27
1.4 一些正则表达式示例 28
1.5 更长的正则表达式示例 33
1.5.1 匹配字符串 35
1.5.2 搜索与匹配……还有贪婪 37
1.6 练习 39
第2章 网络编程 42
2.1 简介 43
2.2 客户端/服务器架构 43
2.2.1 硬件客户端/服务器架构 43
2.2.2 软件客户端/服务器架构 44
2.2.3 银行出纳员作为服务器吗 44
2.2.4 客户端/服务器网络编程 45
2.3 套接字:通信端点 46
2.3.1 套接字 46
2.3.2 套接字地址:主机-端口对 47
2.3.3 面向连接的套接字与无连接的套接字 47
2.4 Python中的网络编程 48
2.4.1 socket()模块函数 49
2.4.2 套接字对象(内置)方法 49
2.4.3 创建TCP服务器 51
2.4.4 创建TCP客户端 54
2.4.5 执行TCP服务器和客户端 56
2.4.6 创建UDP服务器 58
2.4.7 创建UDP客户端 59
2.4.8 执行UDP服务器和客户端 60
2.4.9 socket模块属性 61
2.5 *SocketServer模块 62
2.5.1 创建SocketServer TCP服务器 63
2.5.2 创建SocketServer TCP客户端 64
2.5.3 执行TCP服务器和客户端 65
2.6 *Twisted框架介绍 66
2.6.1 创建Twisted Reactor TCP服务器 66
2.6.2 创建Twisted Reactor TCP客户端 67
2.6.3 执行TCP服务器和客户端 69
2.7 相关模块 69
2.8 练习 70
第3章 因特网客户端编程 74
3.1 因特网客户端简介 75
3.2 文件传输 75
3.2.1 文件传输因特网协议 75
3.2.2 文件传输协议 76
3.2.3 Python和FTP 77
3.2.4 ftplib.FTP类的方法 77
3.2.5 交互式FTP示例 78
3.2.6 客户端FTP程序示例 79
3.2.7 FTP的其他内容 80
3.3 网络新闻 81
3.3.1 Usenet与新闻组 81
3.3.2 网络新闻传输协议 82
3.3.3 Python和NNTP 83
3.3.4 nntplib.NNTP类方法 83
3.3.5 交互式NNTP示例 84
3.3.6 客户端程序NNTP示例 85
3.3.7 NNTP的其他内容 89
3.4 电子邮件 90
3.4.1 电子邮件系统组件和协议 90
3.4.2 发送电子邮件 91
3.4.3 Python和SMTP 92
3.4.4 smtplib.SMTP类方法 92
3.4.5 交互式SMTP示例 93
3.4.6 SMTP的其他内容 94
3.4.7 接收电子邮件 94
3.4.8 POP和IMAP 95
3.4.9 Python和POP3 95
3.4.10 交互式POP3示例 96
3.4.11 poplib.POP3类方法 97
3.4.12 客户端程序SMTP和POP3示例 98
3.4.13 Python和IMAP4 100
3.4.14 交互式IMAP4示例 100
3.4.15 imaplib.IMAP4类中的常用方法 101
3.5 实战 102
3.5.1 生成电子邮件 102
3.5.2 解析电子邮件 104
3.5.3 基于Web的云电子邮件服务 105
3.5.4 最佳实践:安全、重构 106
3.5.5 Yahoo! Mail 108
3.5.6 Gmail 112
3.6 相关模块 115
3.6.1 电子邮件 115
3.6.2 其他因特网客户端协议 115
3.7 练习 116
第4章 多线程编程 122
4.1 简介/动机 123
4.2 线程和进程 124
4.2.1 进程 124
4.2.2 线程 124
4.3 线程和Python 125
4.3.1 全局解释器锁 125
4.3.2 退出线程 126
4.3.3 在Python中使用线程 126
4.3.4 不使用线程的情况 126
4.3.5 Python的threading模块 128
4.4 thread模块 128
4.5 threading模块 132
4.5.1 Thread类 133
4.5.2 threading模块的其他函数 139
4.6 单线程和多线程执行对比 140
4.7 多线程实践 142
4.7.1 图书排名示例 142
4.7.2 同步原语 149
4.7.3 锁示例 149
4.7.4 信号量示例 156
4.8 生产者-消费者问题和Queue/queue模块 159
4.9 线程的替代方案 162
4.9.1 subprocess模块 163
4.9.2 multiprocessing模块 163
4.9.3 concurrent.futures模块 163
4.10 相关模块 165
4.11 练习 165
第5章 GUI编程 168
5.1 简介 169
5.1.1 Tcl、Tk和Tkinter 169
5.1.2 安装和使用Tkinter 170
5.1.3 客户端/服务端架构 170
5.2 Tkinter和Python编程 170
5.2.1 Tkinter模块:添加Tk到应用中 171
5.2.2 GUI编程介绍 171
5.2.3 顶层窗口:Tkinter.Tk() 173
5.2.4 Tk控件 173
5.3 Tkinter示例 174
5.3.1 Label控件 174
5.3.2 Button控件 175
5.3.3 Label和Button控件 175
5.3.4 Label、Button和Scale控件 176
5.3.5 偏函数应用示例 178
5.3.6 中级Tkinter示例 180
5.4 其他GUI简介 185
5.4.1 Tk接口扩展(Tix) 187
5.4.2 Python MegaWidgets(PMW) 188
5.4.3 wxWidgets和wxPython 188
5.4.4 GTK+和PyGTK 190
5.4.5 Tile/Ttk 192
5.5 相关模块和其他GUI 194
5.6 练习 196
第6章 数据库编程 198
6.1 简介 199
6.1.1 持久化存储 199
6.1.2 数据库基本操作和SQL 199
6.1.3 数据库和Python 201
6.2 Python的DB-API 203
6.2.1 模块属性 203
6.2.2 Connection对象 205
6.2.3 Cursor对象 206
6.2.4 类型对象和构造函数 207
6.2.5 关系数据库 209
6.2.6 数据库和Python:适配器 210
6.2.7 使用数据库适配器的示例 210
6.2.8 数据库适配器示例应用 215
6.3 ORM 226
6.3.1 考虑对象,而不是SQL 227
6.3.2 Python和ORM 227
6.3.3 员工角色数据库示例 228
6.3.4 SQLAlchemy 229
6.3.5 SQLObject 240
6.4 非关系数据库 245
6.4.1 NoSQL介绍 245
6.4.2 MongoDB 246
6.4.3 PyMongo:MongoDB和Python 246
6.4.4 总结 250
6.5 相关文献 250
6.6 练习 252
第7章 *Microsoft Office编程 256
7.1 简介 257
7.2 使用Python进行COM客户端编程 257
7.2.1 客户端COM编程 258
7.2.2 入门 258
7.3 入门示例 259
7.3.1 Excel 259
7.3.2 Word 261
7.3.3 PowerPoint 262
7.3.4 Outlook 264
7.4 中级示例 266
7.4.1 Excel 266
7.4.2 Outlook 268
7.4.3 PowerPoint 273
7.4.4 总结 280
7.5 相关模块/包 281
7.6 练习 281
第8章 扩展Python 286
8.1 简介和动机 287
8.1.1 Python扩展简介 287
8.1.2 什么情况下需要扩展Python 288
8.1.3 什么情况下不应该扩展Python 288
8.2 编写Python扩展 289
8.2.1 创建应用代码 289
8.2.2 根据样板编写封装代码 291
8.2.3 编译 296
8.2.4 导入并测试 297
8.2.5 引用计数 300
8.2.6 线程和全局解释器锁 301
8.3 相关主题 302
8.3.1 SWIG 302
8.3.2 Pyrex 302
8.3.3 Cython 302
8.3.4 Psyco 303
8.3.5 PyPy 303
8.3.6 嵌入Python 304
8.4 练习 304
第2部分 Web开发
第9章 Web客户端和服务器 306
9.1 简介 307
9.1.1 Web应用:客户端/服务器计算 307
9.1.2 因特网 308
9.2 Python Web客户端工具 310
9.2.1 统一资源定位符 310
9.2.2 urlparse模块 312
9.2.3 urllib模块/包 313
9.2.4 使用urllib2 HTTP验证的示例 317
9.2.5 将HTTP验证示例移植到Python 3中 319
9.3 Web客户端 322
9.3.1 一个简单的Web爬虫/蜘蛛/机器人 322
9.3.2 解析Web页面 328
9.3.3 可编程的Web浏览 333
9.4 Web(HTTP)服务器 336
9.5 相关模块 339
9.6 练习 341
第10章 Web编程:CGI和WSGI 345
10.1 简介 346
10.2 帮助Web服务器处理客户端数据 346
10.2.1 CGI简介 346
10.2.2 CGI应用程序 347
10.2.3 cgi模块 348
10.2.4 cgitb模块 348
10.3 构建CGI应用程序 349
10.3.1 构建Web服务器 349
10.3.2 建立表单页 351
10.3.3 生成结果页面 352
10.3.4 生成表单和结果页面 353
10.3.5 全面交互的Web站点 357
10.4 在CGI中使用Unicode 362
10.5 高级CGI 364
10.5.1 mulitipart表单提交和文件上传 364
10.5.2 多值字段 364
10.5.3 cookie 365
10.5.4 cookie和文件上传 365
10.6 WSGI简介 373
10.6.1 动机(替代CGI) 373
10.6.2 服务器集成 374
10.6.3 外部进程 374
10.6.4 WSGI简介 375
10.6.5 WSGI服务器 376
10.6.6 参考服务器 377
10.6.7 WSGI应用示例 378
10.6.8 中间件及封装WSGI应用 378
10.6.9 在Python 3中使用WSGI 379
10.7 现实世界中的Web开发 380
10.8 相关模块 380
10.9 练习 381
第11章 Web框架:Django 384
第12章 云计算:Google App Engine 470
第13章 Web服务 530
第3部分 补充/实验章节
第14章 文本处理 553
第15章 其他内容 577
附录A 部分练习参考答案 593
附录B 参考表 597
B.1 Python关键字 597
B.2 Python标准操作符和函数 598
B.3 数值类型操作符和函数 599
B.4 序列类型操作符和函数 600
B.5 字符串格式化操作符转换符号 602
B.6 字符串格式化操作符指令 603
B.7 字符串类型内置方法 603
B.8 列表类型内置方法 605
B.9 字典类型内置方法 605
B.10 集合类型操作符和内置函数 606
B.11 文件对象方法和数据属性 607
B.12 Python异常 608
B.13 类的特殊方法 610
B.14 Python操作符汇总 612
附录C Python 3:一种编程语言进化的产物 614
C.1 为何Python在变化 614
C.2 都发生了哪些变化 615
C.2.1 print变成了print() 615
C.2.2 字符串:默认为Unicode编码 616
C.2.3 单类类型 616
C.2.4 更新异常的语法 617
C.2.5 整数的更新 618
C.2.6 迭代器无处不在 619
C.3 迁移工具 619
C.3.1 2to3工具 619
C.3.2 Python 2.6+ 620
C.4 结论 620
C.5 参考资料 620
附录D 利用Python 2.6+向Python 3迁移 622
D.1 Python 3:Python的下一代 622
D.2 整数 623
D.2.1 单整数类型 624
D.2.2 新型二进制和改进的八进制字符 624
D.2.3 经典除法或真除法 625
D.3 内置函数 626
D.3.1 print语句或print()函数 626
D.3.2 reduce()转移到了functools模块中 627
D.3.3 其他更新 627
D.4 面向对象编程:两种不同的类对象 628
D.5 字符串 629
D.6 异常 630
D.6.1 处理异常(使用as) 630
D.6.2 抛出异常 630
D.7 其他转换工具和技巧 631
D.8 编写兼容版本2.x和3.x的代码 632
D.8.1 对比print和print() 632
D.8.2 将你的方法导入解决方案中 633
D.8.3 整合在一起 634
D.9 结论 635
“期待已久的Core Python Programming第2版已经证明了本书确实值得期待——它深度与广度齐备,其中囊括的有用练习可以帮助读者掌握Python并付之于实践。” ——Alex Martelli,Python in a Nutshell作者兼Python Cookbook编辑
“Wesley Chun的Core Python Programming一书好评如潮,而且它也证明它配得上所有的好评。我想该书是当前学习Python的图书。在市面上众多的Python图书中,我觉得Chun的这本书是好的,因此向大家强烈推荐本书。” ——David Mertz博士,IBM DeveloperWorks
“在过去多年,我一直在从事Python的研究,发现本书获得了大量的正面评价。这些评价证实了这样一个观点,即Core Python Programming被认为是Python入门读物事实上的标准。” ——Richard Ozaki,Lockheed Martin公司
“终于,一本既可以作为Python教程又可以作为Python编程语言参考的图书问世!” ——Michael Baxter,Linux Journal
“本书写作相当精良。这是我遇到的清晰、友好的Python图书,它在一个广阔的背景中介绍了Python。它仔细、深入地剖析了一些重要的Python主题,而且读者无需大量的相关经验也能看懂。与所有其他Python入门类图书不同的是,它不会用隐晦、难以理解的文字来折磨读者,而是始终立足于帮助读者牢固掌握Python的语法和结构。” ——http://python.org bookstore Web site
“如果我只能有一本Python图书的话,那它肯定是Wesley Chun著作的Core Python Programming。本书成功地涵盖了Python的多个主题,其详细程度远甚于Learning Python一书,而且涵盖的主题也远非Python核心语言这么简单。如果你只打算购买一本Python图书,我强烈向您推荐本书。你不但会爱上本书,也会爱上本书中包含的程序员的讽刺性智慧。重要的是,您将学会Python。更更重要的是,您会发现本书会在您每日的Python编程生活中提供各种帮助。干的不错,Chun先生!” ——Ron Stephens,Python Learning Foundation
“我认为编程初学者的语言是Python,毋庸置疑!我喜欢的图书是Core Python Programming。” ——s003apr,MP3Car.com Forums
“就我个人而言,我相当喜欢Pyhon。它易于学习、非常直观、相当灵活,而且执行速度也相当快。在Windows世界中,Python虽然只是刚崭露头角,但是因为越来越多的人们发现了它,因此选择从Python起步可以获得大量的支持。要学习Python,我选择从Wesley Chun的这本Core Python Programming起步。” ——Bill Boswell,MCSE,Microsoft Certified Professional Magazine Online
“如果你是通过图书来学习编程,我向您推荐Core Python Programming,它是目前为止我发现的Python图书。我也是一个Python新兵,但是在3个月之后,我就可以在项目中实施Python了(自动处理MSOffice、SQL DB Stuff等)。” ——ptonman,Dev Shed Forums
“Python是一种美丽的语言。它易于学习、跨平台,而且能够良好运行。它已经实现了Java一直想要实现的很多技术目标。对Python的一句话描述是‘所有其他语言是随着时间发生演进变化,但是Python则是设计出来的。’而且Python设计的相当不错。虽然现在市面上有大量的Python图书,但是目前为止我遇到的好的一本是Core Python Programming。” ——Chris Timmons,C. R. Timmons Consulting
“如果你喜欢Prentice Hall出版社Core系列图书,你需要考虑的另一本写作精良的图书是Core Python Programming。它将其他Python图书中很少涵盖的许多实用主题进行了事无巨细的剖析。” ——Mitchell L. Model, MLM Consulting