编辑推荐
想进一步提升Python编程水平?请深入分析真实应用程序中使用的大量相关主题涵盖了正则表达式、Internet/网络编程、GUI、SQL/数据库/ORM、多线程、Web开发了解当前的开发区域,比如Google 、Twitter、MongoDB、OAuth、Python 3迁移、Java/Jython囊括有关Django、Google App Engine、CSV/JSON/XML和Microsoft Office的全新内容。包含Python 2和Python 3代码,以便立即可以使用提供了代码片段、互动案例和实用练习,旨在巩固Python技能
Python是一种灵活、可靠且具有表现力的编程语言,它将编译语言的强大与脚本语言的简洁性、快速开发特性整合起来。在《Python核心编程 第3版》中,杰出Python开发人员兼企业培训师Wesley Chun会帮助您将Python技能提升到更高的水平。《》涵盖了成为一名技术全面的Python开发人员所需的一切内容。《》讲解了应用开发相关的多个领域,而且书中的内容可以立即应用到项目开发中。此外,《》还包含了一些使用Python 2和Python 3编写的代码案例,以及一些代码移植技巧。有些代码片段甚至无须修改就可以运行在Python 2.x或Python 3.x上。
《》讲解了如下内容:学习专业的Python风格、杰出实践以及好的编程习惯;使用TCP、UDP、XML-RPC来开发客户端和服务器,并供高级的库(比如SocketServer和Twisted)使用使用Tkinter和其他可用的工具来开发GUI应用;通过使用C/C 编写扩展,或者使用多线程来编写I/O密集型代码,提升应用的性能;探究QSL和关系数据库、ORM,甚至是MongoDB这样的非关系型(NonSQL)数据库;学习Web编程的基础知识,包括Web客户端和服务器,以及CGI和WSGI;使用正则表达式和强大的文本处理工具,来创建和解析CSV、JSON和XML数据;使用COM客户端编程与常见的Microsoft Office软件(比如Excel、PowerPoint、Outlook)进行交互;使用Django框架深入了解Web开发,以及使用Google App Engine深入了解云计算;使用Jyhon探索Java编程,以及在JVM上运行Python代码的方式;连接Web服务,比如连接Yahoo!Fiance获取股票行情,或者连接Yahoo!Mail、Gmail以及其他邮件服务器来下载或发送邮件;通过学习如何连接Twitter和Google 网络来拥抱社交媒体的热潮。
内容简介
《Python核心编程(第3版)》是经典畅销图书《Python核心编程(第二版)》的全新升级版本,总共分为3部分。第1部分为讲解了Python的一些通用应用,包括正则表达式、网络编程、Internet客户端编程、多线程编程、GUI编程、数据库编程、Microsoft Office编程、扩展Python等内容。第2部分讲解了与Web开发相关的主题,包括Web客户端和服务器、CGI和WSGI相关的Web编程、Django Web框架、云计算、高级Web服务。第3部分则为一个补充/实验章节,包括文本处理以及一些其他内容。《Python核心编程(第3版)》适合具有一定经验的Python开发人员阅读。
作者简介
Wesley Chun在高中阶段开始进入计算世界,当时他使用的是BASIC和6502汇编语言,系统是Commodore。随后开始在App IIe上使用Pascal语言,然后是再在穿孔卡片上使用ForTran语言。正在在穿孔卡片上使用ForTran的经历使他成为一名谨慎小心的开发人员,因为将一组卡片发送到学校的主机并得到返回结果,往往需要一周的往返时间。Wesley还将一个新闻类从打字机改变为Osborne 1 CP/M计算机。他得到的一份有酬劳的工作是作为学生辅导员为四年级、五年级和六年级的学生及其父母家讲授BASIC编程课程。高中毕业后,Wesley以加利福尼亚校友学者的身份进入加州大学伯克利分校。他主修应用数学(计算机科学),辅修音乐(古典钢琴),并以A级和B级的成绩毕业。在学校期间,他先后使用过Pascal、Logo和C语言编写过程序。他还参加了一个以录像带培训和心理咨询为特色的辅导课程。他的暑期实习项目包括以第4代编程语言编写代码,并编写了一个“Getting Started”用户手册。几年过后,他开始在加州大学圣巴拉拉分校继续学习,并获得了计算机科学(分布式系统)的硕士学位。在此期间,他还讲授C编程课程。他的一片以其硕士论文为基础的论文在第29杰HICSS大会上被提名为杰出论文,其随后的一个论文版本刊登在新加坡大学High Performance Computing杂志上。自从毕业之后,Wesley就投身于软件行业,编写和出版了多本图书,并且发表了数百篇会议报告和教程。此外还开发了针对公共企业和私有企业培训的Python课程。Wesley的Python使用经历始于Python 1.4版本(当时Python刚刚起步),他使用Python设计了Yahoo!Mail拼写检查程序以及地址簿。他随后成为Yahoo!People Search部门的首席工程师。在离开Yahoo!之后,他写作了本书第1版,然后开始周游世界。回来之后,他使用Python编写过许多程序,包括本地产品搜索程序、反垃圾邮件和防病毒邮件程序、Facebook游戏/应用,以及许多完全不同的其他东西,比如医生用来进行脊柱骨折分析的软件。在其闲暇时间,Wesley喜欢弹钢琴、打保龄球、打篮球、骑自行车、玩极限飞盘、打扑克、旅行,以及与家人共享人伦。他还是Tutor邮件列表和PyCon这两个Python用户组的志愿者。他还维护着艾伦帕森斯怪物项目目录(Alan Parsons Project Monster Discography)。在本书写作之时,Wesley是Google的开发大使,为其云产品背书。Wesley生活在硅谷,您可以通过@wescpy或plus.ly/wescpy来找到他。
目录
- 第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 ReactorTCP服务器 66
- 2.6.2 创建Twisted ReactorTCP客户端 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验证示例移植到Python3中 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
- 11.1 简介 385
- 11.2 Web框架 385
- 11.3 Django简介 386
- 11.4 项目和应用 390
- 11.4.1 在Django中创建项目 390
- 11.4.2 运行开发服务器 393
- 11.5 “Hello World”应用(一个博客) 394
- 11.6 创建模型来添加数据库服务 396
- 11.6.1 设置数据库 396
- 11.6.2 创建表 398
- 11.7 Python 应用shell 400
- 11.7.1 在Django中使用Pythonshell 400
- 11.7.2 测试数据模型 402
- 11.8 Django管理应用 403
- 11.8.1 设置admin 403
- 11.8.2 使用admin 404
- 11.9 创建博客的用户界面 410
- 11.9.1 创建模板 411
- 11.9.2 创建URL模式 412
- 11.9.3 创建视图函数 415
- 11.10 改进输出 418
- 11.11 处理用户输入 422
- 11.11.1 模板:添加HTML表单 423
- 11.11.2 添加URLconf项 423
- 11.11.3 视图:处理用户输入 423
- 11.11.4 跨站点请求伪造 424
- 11.12 表单和模型表单 426
- 11.12.1 Django表单简介 426
- 11.12.2 模型表单示例 427
- 11.12.3 使用ModelForm来生成HTML表单 427
- 11.12.4 处理ModelForm数据 428
- 11.13 视图进阶 429
- 11.14 *改善外观 431
- 11.15 *单元测试 432
- 11.15.1 blog应用的代码审查 434
- 11.15.2 blog应用总结 439
- 11.16 *中级Django应用:TweetApprover 439
- 11.16.1 创建项目文件结构 440
- 11.16.2 安装Twython库 445
- 11.16.3 URL结构 446
- 11.16.4 数据模型 449
- 11.16.5 提交新推文以便审核 453
- 11.16.6 审核推文 457
- 11.17 资源 465
- 11.18 总结 465
- 11.19 练习 466
- 第12章 云计算:Google App Engine 470
- 12.1 简介 471
- 12.2 云计算 471
- 12.2.1 云计算服务的层次 472
- 12.2.2 App Engine 473
- 12.3 沙盒和App Engine SDK 476
- 12.4 选择一个App Engine框架 479
- 12.5 Python 2.7支持 485
- 12.5.1 一般差异 486
- 12.5.2 代码中的差异 486
- 12.6 与Django比较 487
- 12.6.1 开始“Hello World” 487
- 12.6.2 手动创建“Hello World”(Zip文件用户) 488
- 12.7 将“Hello World”改成一个 简单的博客 489
- 12.7.1 快速发现改动:30秒内将纯文本转成HTML 489
- 12.7.2 添加表单 490
- 12.7.3 添加Datastore服务 492
- 12.7.4 迭代改进 496
- 12.7.5 开发/SDK控制台 496
- 12.8 添加Memcache服务 502
- 12.9 静态文件 505
- 12.10 添加用户服务 505
- 12.10.1 Google账号验证 506
- 12.10.2 联合验证 507
- 12.11 远程API shell 507
- 12.12 问与答(Python实现) 509
- 12.12.1 发送电子邮件 509
- 12.12.2 接收电子邮件 510
- 12.13 使用XMPP发送即时消息 512
- 12.14 处理图片 514
- 12.15 任务队列(非定期任务) 514
- 12.15.1 创建任务 515
- 12.15.2 配置app.yaml 515
- 12.15.3 其他任务创建选项 516
- 12.15.4 将发送电子邮件作为任务 517
- 12.15.5 deferred包 519
- 12.16 使用Appstats进行分析 520
- 12.16.1 在app.yaml中添加标准处理程序 521
- 12.16.2 添加自定义Admin Console页面 521
- 12.16.3 作为内置界面启用界面 521
- 12.17 URLfetch服务 522
- 12.18 问与答(无Python实现) 522
- 12.18.1 Cron服务(计划任务作业) 523
- 12.18.2 预热请求 523
- 12.18.3 DoS保护 524
- 12.19 厂商锁定 524
- 12.20 资源 525
- 12.21 总结 526
- 12.22 练习 527
- 第13章 Web服务 530
- 13.1 简介 531
- 13.2 Yahoo!金融股票报价服务器 531
- 13.3 Twitter微博 534
- 13.3.1 社交网络 534
- 13.3.2 Twitter和Python 535
- 13.3.3 稍微长一点的API组合应用示例 537
- 13.3.4 总结 547
- 13.3.5 额外在线资源 548
- 13.4 练习 548
- 第3部分 补充/实验章节
- 第14章 文本处理 553
- 14.1 逗号分隔值(CSV) 554
- 14.1.1 CSV简介 554
- 14.1.2 再论股票投资组合示例 556
- 14.2 JSON 557
- 14.3 可扩展标记语言 561
- 14.3.1 XML简介 562
- 14.3.2 Python和XML 562
- 14.3.3 XML实战 566
- 14.3.4 *使用XML-RPC的客户端-服务器服务 569
- 14.4 参考文献 573
- 14.5 相关模块 574
- 14.6 练习 574
- 第15章 其他内容 577
- 15.1 Jython 578
- 15.1.1 Jython简介 578
- 15.1.2 Swing GUI开发示例 579
- 15.2 Google 581
- 15.2.1 Google 平台简介 582
- 15.2.2 Python和Google API 582
- 15.2.3 一个简单的社交媒体分析工具 582
- 15.3 练习 590
- 附录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