Python基础教程:第2版(经典教程的全新改版,10个项目引人入胜)
- 定价:¥69.00
- 校园优惠价:¥60.72 (88折) (马上了解)
- 评分:




(已有40条评价)
- 促销活动:
- 此商品暂时缺货(可留下联系方式,到货将第一时间通知您)
-
如果您急需团购,可点击“团购急调”按钮将此书加入购物车,由客服人员为您协调调货!
>> 查看详细说明
信息提示
关闭
如果您急需团购,可点击“团购急调”按钮将此书加入购物车,由我们的客服人员为您协调调货!
- 团购订单标准如下:
- 单品满30册可选择团购服务。
- 提交团购订单后,服务人员会主动和您联系,并根据您的会员等级、购买数量、金额、时间、配送要求等情况和您协商,以促成最终的成交。
- 有关团体购书的任何问题请随时联系:(010)63970506
基本信息
- 原书名:Beginning Python: From Novice to Professional, Second Edition
- 原出版社: Apress
编辑推荐
十年磨一剑,经典教程全新改版
全面、详尽,入门首选
10个项目引人入胜
内容简介
书籍 计算机书籍
本书包括Python程序设计的方方面面,首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句。然后循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器。此后探讨了如何将Python与数据库、网络、C语言等工具结合使用,从而发挥出Python的强大功能,同时介绍了Python程序测试、打包、发布等知识。最后,作者结合前面讲述的内容,按照实际项目开发的步骤向读者介绍了几个具有实际意义的Python项目的开发过程。
本书内容涉及的范围较广,既能为初学者夯实基础,又能帮助程序员提升技能,适合各个层次的Python开发人员阅读参考。
作译者
Magnus Lie Hetland 挪威科技大学副教授,教授算法。喜欢钻研新的编程语言,是Python语言的坚定支持者。他写过很多Python方面的书和在线教程,比如深受大家欢迎的网上教程Instant Python。
目录
第1章 基础知识 1
1.1 安装Python 1
1.1.1 Windows 1
1.1.2 Linux和UNIX 3
1.1.3 苹果机(Macintosh) 4
1.1.4 其他发布版 5
1.1.5 时常关注,保持更新 6
1.2 交互式解释器 6
1.3 算法是什么 7
1.4 数字和表达式 8
1.4.1 长整型数 9
1.4.2 十六进制和八进制 10
1.5 变量 10
1.6 语句 11
1.7 获取用户输入 12
1.8 函数 13
1.9 模块 14
1.9.1 cmath和复数 14
1.9.2 回到__future__ 15
1.10 保存并执行程序 15
1.10.1 通过命令提示符运行Python脚本 16
1.10.2 让脚本像普通程序一样运行 17
1.10.3 注释 18
1.11 字符串 19
1.11.1 单引号字符串和转义引号 19
1.11.2 拼接字符串 20
1.11.3 字符串表示,str和repr 20
1.11.4 input和raw_input的比较 21
1.11.5 长字符串、原始字符串和Unicode 22
1.12 小结 24
1.12.1 本章的新函数 25
1.12.2 接下来学什么 25
第2章 列表和元组 26
2.1 序列概览 26
2.2 通用序列操作 27
2.2.1 索引 27
2.2.2 分片 29
2.2.3 序列相加 31
2.2.4 乘法 31
2.2.5 成员资格 32
2.2.6 长度、最小值和最大值 33
2.3 列表:Python的“苦力” 34
2.3.1 list函数 34
2.3.2 基本的列表操作 34
2.3.3 列表方法 36
2.4 元组:不可变序列 41
2.4.1 tuple函数 42
2.4.2 基本元组操作 42
2.4.3 那么,意义何在 42
2.5 小结 43
2.5.1 本章的新函数 43
2.5.2 接下来学什么 43
第3章 使用字符串 44
3.1 基本字符串操作 44
3.2 字符串格式化:精简版 44
3.3 字符串格式化:完整版 46
3.3.1 简单转换 47
3.3.2 字段宽度和精度 47
3.3.3 符号、对齐和0填充 47
3.4 字符串方法 49
3.4.1 find 49
3.4.2 join 50
3.4.3 lower 51
3.4.4 replace 51
3.4.5 split 52
3.4.6 strip 52
3.4.7 translate 52
3.5 小结 54
3.5.1 本章的新函数 54
3.5.2 接下来学什么 54
第4章 字典:当索引不好用时 55
4.1 字典的使用 55
4.2 创建和使用字典 56
4.2.1 dict函数 56
4.2.2 基本字典操作 57
4.2.3 字典的格式化字符串 58
4.2.4 字典方法 59
4.3 小结 64
4.3.1 本章的新函数 64
4.3.2 接下来学什么 64
第5章 条件、循环和其他语句 65
5.1 print和import的更多信息 65
5.1.1 使用逗号输出 65
5.1.2 把某件事作为另一件事导入 66
5.2 赋值魔法 67
5.2.1 序列解包 67
5.2.2 链式赋值 68
5.2.3 增量赋值 68
5.3 语句块:缩排的乐趣 69
5.4 条件和条件语句 69
5.4.1 这就是布尔变量的作用 69
5.4.2 条件执行和 if 语句 70
5.4.3 else子句 71
5.4.4 elif子句 71
5.4.5 嵌套代码块 71
5.4.6 更复杂的条件 72
5.4.7 断言 76
5.5 循环 76
5.5.1 while循环 77
5.5.2 for循环 77
5.5.3 循环遍历字典元素 78
5.5.4 一些迭代工具 79
5.5.5 跳出循环 80
5.5.6 循环中的else子句 82
5.6 列表推导式——轻量级循环 82
5.7 三人行 83
5.7.1 什么都没发生 84
5.7.2 使用del删除 84
5.7.3 使用exec和eval执行和求值字符串 85
5.8 小结 87
5.8.1 本章的新函数 88
5.8.2 接下来学什么 88
第6章 抽象 89
6.1 懒惰即美德 89
6.2 抽象和结构 90
6.3 创建函数 90
6.3.1 记录函数 91
6.3.2 并非真正函数的函数 92
6.4 参数魔法 92
6.4.1 值从哪里来 93
6.4.2 我能改变参数吗 93
6.4.3 关键字参数和默认值 97
6.4.4 收集参数 99
6.4.5 反转过程 101
6.4.6 练习使用参数 102
6.5 作用域 103
6.6 递归 105
6.6.1 两个经典:阶乘和幂 106
6.6.2 另外一个经典:二元查找 107
6.7 小结 110
6.7.1 本章的新函数 110
6.7.2 接下来学什么 111
第7章 更加抽象 112
7.1 对象的魔力 112
7.1.1 多态 113
7.1.2 封装 115
7.1.3 继承 117
7.2 类和类型 117
7.2.1 类到底是什么 117
7.2.2 创建自己的类 118
7.2.3 特性、函数和方法 119
7.2.4 类的命名空间 121
7.2.5 指定超类 122
7.2.6 调查继承 122
7.2.7 多个超类 123
7.2.8 接口和内省 124
7.3 一些关于面向对象设计的思考 125
7.4 简明总结 125
7.4.1 本章的新函数 126
7.4.2 接下来学什么 126
第8章 异常 127
8.1 什么是异常 127
8.2 按自己的方式出错 127
8.2.1 raise语句 127
8.2.2 自定义异常类 128
8.3 捕捉异常 129
8.4 不止一个except子句 130
8.5 用一个块捕捉两个异常 131
8.6 捕捉对象 131
8.7 真正的全捕捉 131
8.8 万事大吉 132
8.9 最后…… 134
8.10 异常和函数 134
8.11 异常之禅 135
8.12 小结 136
8.12.1 本章的新函数 137
8.12.2 接下来学什么 137
第9章 魔法方法、属性和迭代器 138
9.1 准备工作 138
9.2 构造方法 139
9.2.1 重写一般方法和特殊的构造方法 140
9.2.2 调用未绑定的超类构造方法 141
9.2.3 使用super函数 142
9.3 成员访问 143
9.3.1 基本的序列和映射规则 144
9.3.2 子类化列表,字典和字符串 146
9.4 更多魔力 147
9.5 属性 147
9.5.1 property函数 148
9.5.2 静态方法和类成员方法 149
9.5.3 __getattr__、__setattr__和它的朋友们 150
9.6 迭代器 151
9.6.1 迭代器规则 151
9.6.2 从迭代器得到序列 153
9.7 生成器 153
9.7.1 创建生成器 153
9.7.2 递归生成器 154
9.7.3 通用生成器 156
9.7.4 生成器方法 156
9.7.5 模拟生成器 157
9.8 八皇后问题 158
9.8.1 生成器和回溯 158
9.8.2 问题 159
9.8.3 状态表示 159
9.8.4 寻找冲突 159
9.8.5 基本情况 160
9.8.6 需要递归的情况 161
9.8.7 打包 162
9.9 小结 163
9.9.1 本章的新函数 164
9.9.2 接下来学什么 164
第10章 充电时刻 165
10.1 模块 165
10.1.1 模块是程序 165
10.1.2 模块用于定义 167
10.1.3 让你的模块可用 169
10.1.4 包 171
10.2 探究模块 172
10.2.1 模块中有什么 172
10.2.2 用help获取帮助 173
10.2.3 文档 174
10.2.4 使用源代码 174
10.3 标准库:一些最爱 175
10.3.1 sys 175
10.3.2 os 176
10.3.3 fileinput 178
10.3.4 集合、堆和双端队列 180
10.3.5 time 184
10.3.6 random 185
10.3.7 shelve 188
10.3.8 re 191
10.3.9 其他有趣的标准模块 204
10.4 小结 205
10.4.1 本章的新函数 205
10.4.2 接下来学什么 206
第11章 文件和素材 207
11.1 打开文件 207
11.1.1 文件模式 207
11.1.2 缓冲 208
11.2 基本文件方法 209
11.2.1 读和写 209
11.2.2 管式输出 210
11.2.3 读写行 211
11.2.4 关闭文件 211
11.2.5 使用基本文件方法 213
11.3 对文件内容进行迭代 214
11.3.1 按字节处理 214
11.3.2 按行操作 215
11.3.3 读取所有内容 215
11.3.4 使用fileinput实现懒惰行迭代 216
11.3.5 文件迭代器 216
11.4 小结 217
11.4.1 本章的新函数 218
11.4.2 接下来学什么 218
第12章 图形用户界面 219
12.1 丰富的平台 219
12.2 下载和安装wxPython 220
12.3 创建示例GUI应用程序 221
12.3.1 开始 221
12.3.2 窗口和组件 222
12.3.3 标签、标题和位置 223
12.3.4 更智能的布局 225
12.3.5 事件处理 226
12.3.6 完成了的程序 226
12.4 但是我宁愿用…… 228
12.4.1 使用Tkinter 229
12.4.2 使用Jython和Swing 229
12.4.3 使用其他开发包 230
12.5 小结 230
第13章 数据库支持 231
13.1 Python数据库API 232
13.1.1 全局变量 232
13.1.2 异常 233
13.1.3 连接和游标 233
13.1.4 类型 235
13.2 SQLite和PySQLite 235
13.2.1 入门 236
13.2.2 数据库应用程序示例 237
13.3 小结 239
13.3.1 本章的新函数 240
13.3.2 接下来学什么 240
第14章 网络编程 241
14.1 少数几个网络设计模块 241
14.1.1 socket模块 242
14.1.2 urllib和urllib2模块 243
14.1.3 其他模块 245
14.2 SocketServer和它的朋友们 246
14.3 多连接 246
14.3.1 使用SocketServer进行分叉和线程处理 248
14.3.2 带有select和poll的异步I/O 248
14.4 Twisted 251
14.4.1 下载并安装Twisted 251
14.4.2 编写Twisted服务器 251
14.5 小结 253
14.5.1 本章的新函数 254
14.5.2 接下来学什么 254
第15章 Python和万维网 255
15.1 屏幕抓取 255
15.1.1 Tidy和XHTML解析 256
15.1.2 Beautiful Soup 260
15.2 使用CGI创建动态网页 261
15.2.1 第一步:准备网络服务器 261
15.2.2 第二步:加入Pound Bang行 261
15.2.3 第三步:设置文件许可 262
15.2.4 CGI安全风险 262
15.2.5 简单的CGI脚本 263
15.2.6 使用cgitb调试 263
15.2.7 使用cgi模块 264
15.2.8 简单的表单 265
15.3 更进一步:mod_python 267
15.3.1 安装mod_python 267
15.3.2 CGI处理程序 269
15.3.3 PSP 270
15.3.4 发布 271
15.4 网络应用程序框架 273
15.5 Web服务:正确分析 274
15.5.1 RSS和相关内容 274
15.5.2 使用XML-RPC进行远程过程调用 275
15.5.3 SOAP 275
15.6 小结 276
15.6.1 本章的新函数 276
15.6.2 接下来学什么 276
第16章 测试 277
16.1 先测试,后编码 277
16.1.1 精确的需求说明 278
16.1.2 为改变而计划 279
16.1.3 测试的4步 279
16.2 测试工具 280
16.2.1 doctest 280
16.2.2 unittest 282
16.3 单元测试以外的内容 285
16.3.1 使用PyChecker和PyLint检查源代码 285
16.3.2 分析 288
16.4 小结 289
16.4.1 本章的新函数 290
16.4.2 接下来学什么 290
第17章 扩展Python 291
17.1 考虑哪个更重要 291
17.2 非常简单的途径:Jython和IronPython 292
17.3 编写C语言扩展 294
17.3.1 SWIG 296
17.3.2 自己研究 299
17.4 小结 303
17.4.1 本章的新函数 304
17.4.2 接下来学什么 304
第18章 程序打包 305
18.1 Distutils基础 305
18.2 打包 307
18.2.1 建立存档文件 307
18.2.2 创建Windows安装程序或RPM包 308
18.3 编译扩展 309
18.4 使用py2exe创建可执行程序 310
18.5 小结 311
18.5.1 本章的新函数 311
18.5.2 接下来学什么 311
第19章 好玩的编程 312
19.1 为什么要好玩 312
19.2 程序设计的柔术 312
19.3 原型设计 313
19.4 配置 314
19.4.1 提取常量 314
19.4.2 配置文件 315
19.5 日志记录 317
19.6 如果还没烦 318
19.7 如果还想学 318
19.8 小结 319
第20章 项目1:即时标记 321
20.1 问题是什么 321
20.2 有用的工具 322
20.3 准备工作 322
20.4 初次实现 323
20.4.1 找出文本块 323
20.4.2 添加一些标记 324
20.5 再次实现 325
20.5.1 处理程序 326
20.5.2 处理程序的超类 326
20.5.3 规则 328
20.5.4 规则的超类 329
20.5.5 过滤器 329
20.5.6 语法分析器 329
20.5.7 构造规则和过滤器 330
20.5.8 整合 333
20.6 进一步探索 337
第21章 项目2:画幅好画 338
21.1 问题 338
21.2 有用的工具 339
21.3 准备工作 339
21.4 初次实现 340
21.4.1 用ReportLab画图 340
21.4.2 构造折线 341
21.4.3 编写原型 342
21.5 再次实现 343
21.5.1 获取数据 343
21.5.2 使用LinePlot类 344
21.6 进一步探索 345
第22章 项目3:万能的XML 346
22.1 问题 346
22.2 有用的工具 347
22.3 准备工作 348
22.4 初次实现 349
22.4.1 创建简单的内容处理程序 349
22.4.2 创建HTML页面 351
22.5 再次实现 353
22.5.1 调度程序的混入类 353
22.5.2 实现首部、页脚和默认的处理程序 355
22.5.3 对目录的支持 355
22.5.4 事件处理程序 356
22.6 进一步探索 359
第23章 项目4:新闻聚合 360
23.1 问题 360
23.2 有用的工具 361
23.3 准备工作 361
23.4 初次实现 361
23.5 再次实现 364
23.6 进一步探索 370
第24章 项目5:虚拟茶话会 372
24.1 问题 372
24.2 有用的工具 372
24.3 准备工作 373
24.4 初次实现 374
24.4.1 ChatServer类 374
24.4.2 ChatSession类 375
24.4.3 整合 377
24.5 再次实现 378
24.5.1 基础命令解释 379
24.5.2 房间 379
24.5.3 登录和退出房间 380
24.5.4 主聊天室 380
24.5.5 新的服务器 381
24.6 进一步探索 385
第25章 项目6:使用CGI进行远程编辑 386
25.1 问题 386
25.2 有用的工具 386
25.3 准备工作 387
25.4 初次实现 387
25.5 再次实现 388
25.5.1 创建文件名表单 388
25.5.2 创建编辑器的脚本 389
25.5.3 编写保存脚本 390
25.5.4 运行编辑器 391
25.6 进一步探索 392
第26章 项目7:自定义电子公告板 394
26.1 问题 394
26.2 有用的工具 395
26.3 准备工作 395
26.4 初次实现 396
26.5 再次实现 399
26.5.1 编写Main脚本 400
26.5.2 编写View脚本 401
26.5.3 编写Edit脚本 402
26.5.4 编写Save脚本 404
26.5.5 尝试使用 405
26.6 进一步探索 406
第27章 项目8:使用XML-RPC进行文件共享 407
27.1 问题 407
27.2 有用的工具 408
27.3 准备工作 408
27.4 初次实现 409
27.4.1 实现一个简单的节点 409
27.4.2 尝试使用首次实现 414
27.5 再次实现 415
27.5.1 创建客户端界面 415
27.5.2 引发异常 416
27.5.3 验证文件名 417
27.5.4 尝试使用再次实现 420
27.6 进一步探索 421
第28章 项目9:文件共享2——GUI版本 422
28.1 问题 422
28.2 有用的工具 422
28.3 准备工作 422
28.4 初次实现 423
28.5 再次实现 425
28.6 进一步探索 428
第29章 项目10:DIY街机游戏 429
29.1 问题 429
29.2 有用的工具 430
29.2.1 pygame 430
29.2.2 pygame.locals 430
29.2.3 pygame.display 431
29.2.4 pygame.font 431
29.2.5 pygame.sprite 431
29.2.6 pygame.mouse 432
29.2.7 pygame.event 432
29.2.8 pygame.image 432
29.3 准备工作 432
29.4 初次实现 433
29.5 再次实现 436
29.6 进一步探索 443
附录A 简明版本 444
附录B Python参考手册 451
附录C 在线资源 462
附录D Python 3.0 465
译者序
和大多数Python爱好者、使用者和开发者一样,我也是通过偶然的机会才接触了这门可以用“优美”来形容的程序设计语言:在大二下学期的时候,数据结构课程的一道习题让我百思不得其解,于是我就上网寻找答案,最后在某个编程网站上找到了参考方案。不过,代码是用一种我没见过的语言编写的。之后的事情自然是我从网上下载了Python的解释器和文档,把Python当作新玩具一样爱不释手地输入一行行代码去试验和探索。当时那种久违的兴奋和震惊,只有在小学学习Logo语言初次接触程序设计的时候才有过。
为了能够更系统地了解Python,我开始寻找教程。学校图书馆只有一本《新华字典》大小的Python手册,使用的版本还是2.0版。无奈中只好求助于网络,最初找到了两本教程:其中一本是很多国内Python爱好者的启蒙教程,后来由著名Python社区啄木鸟组织翻译的《深入Python》,另外一本就是本书的前身Practical Python;接着我顺藤摸瓜查到了刚刚出版的本书第1版的英文版。在试读了几页内容之后,我萌生了和朋友一起翻译的想法,不过,当时只是将其作为一种“强迫”自己将原版文字掰开来揉碎了进行理解的方式。在完成前十章后,谭颖华老师通过MSN联系到我,告诉我本书已经由图灵公司引进,希望能够使用我们的翻译版本。
对我来说,兴奋过后感受到了前所未有的压力。事实上就算我预料到了可能的困难,却低估了其难度。出版社耐心地等待我们花了相当长时间完成了第1版,之后却被告知原书第2版已经上市。接下来我们又只好逐行对照两个版本的区别进行更改——由于第2版中增加了大量的Python 3.0相关的内容,这项工作实际上比第1版翻译还要耗费精力。不过这也给了我们修正第1版错误、对语言进行润色的难得机会。
严格来说,本书前几章都在介绍最基本的程序设计理念,例如极限编程、面向对象程序设计,对于富有经验的开发人员,特别是从C/C++或其他语言转型过来的开发人员来说,可以直接跳过这些章节。但对于没有多少开发经验或者准备以Python进行编程入门的新手来说,这些章节则是不容错过的。作者对Python语言的各个方面的剖析准确而到位,各部分会花上不同篇幅确保读者理解而又不会浪费时间。书中各个章节分工明确,对Python从语法到编译打包、从测试到GUI程序的各个方面都进行了介绍并辅以大量实例。
无论是经验丰富的高手还是初出茅庐的新人,本书最后的10个项目都是难得的练手机会——这也是本书不同于其他Python教程的特色之一。这10个项目基本覆盖了前面章节所提到的各种知识点,同时又不乏趣味性和实用性。
本书第2、3、9、11、14、17和21章由曾军崴翻译,其余章节由司维翻译。谭颖华老师负责全书的统稿和润色,并且承担了第2版中大部分章节的琐碎繁杂却重要的更新工作。虽然我们尽力保证译文的正确和通顺,但限于自身的程序设计和文字表达水平,问题在所难免,希望读者在容忍的同时能够指正,在论坛、Blog或者图灵网站上指出都可。希望此译本能在读者学习Python以及推广这门语言方面有所帮助。
译者
2010年2月
前言
编写C程序就像拿着剃刀的人在刚打过蜡的舞场内跳快舞。
——Waldi Ravens
C++:难以学习,生就如此。
——匿名
Java在很多方面就像是C++。
——Michael Feldman
现在请看一种前所未有的表演……
——Monty Python的作品《飞行的马戏团》
我引用了别人的几句话来定下本书的基调,这当然很不正式。为了让大家可以轻松地阅读本书,我试图用一点幽默的方式来讨论Python编程的主题。幽默是Python社区的传统,而很多幽默都和Monty Python 的滑稽短剧有关。所以我举的一些例子可能看起来有些傻,希望你能够接受。(Python这个名字是从Monty Python借鉴来的,而不是源于那条大蟒蛇。)
在这个前言中,我会简单地告诉你Python是什么,为什么你应该使用它,谁应该使用它,本书的读者群是谁以及本书是如何组织的。
那么,什么是Python,为什么你要使用它呢?还是引用官方的说法吧(http://www.python.org/ doc/essays/blurb.html),Python就是“一种解释型的、面向对象的、带有动态语义的高级程序设计语言”。这句话中的很多术语,你可以在阅读本书的过程中逐渐弄懂,但最重要的是,Python是一种使你在编程时能够保持自己风格的程序设计语。你不用费什么劲就可以实现你想要的功能 ,并且编写的程序清晰易懂(和当前流行的其他各种程序设计语言相比更是如此)。
尽管Python可能不会像C或者C++那样的编译型语言一样快,但是Python依然值得一用,因为它可以让你节约编程时间,而大多数程序的运行速度差异可能并不是那么显而易见。如果你是个C程序员,你可以在以后轻松地用C实现程序的关键部分,让它们和使用Python编写的部分相互协作。如果你之前没有任何编程的经历(而且可能被我前面提到的C和C++的话唬住了),那么既简单又强大的Python就是你入门的完美选择。
那么谁该使用Python呢?自从Guido van Rossum在20世纪90年代初创造这门语言以来,它的支持者就一直在稳步增加,而且近些年来,社区对它的兴趣也日益浓厚。Python广泛用于系统管理工作(比如它是很多Linux发行版的重要组成部分),它也可以用于教授零起步的入门者编程。NASA在它的几个系统中既用Python开发,又将其作为脚本语言。Industrial Light & Magic在高预算影片中使用Python制作影片的特效;Yahoo!使用它(包括其他技术)管理讨论组;Google用它实现Web爬虫和搜索引擎中的很多组件。Python正在用于计算机游戏和生物信息等各种领域。不久后可能就会有人问了:“谁不用Python呢?”
本书面向那些希望学习如何使用Python编程的读者,其内容适合广泛的读者群,不管你是程序设计的新手还是高级计算机用户。如果你之前从未写过程序,那么你应该从第1章开始阅读,直到你觉得所学的内容对你来说有些超前了(真的有可能会这样),此时你就应该开始实践,编写自己的程序,待时机成熟,你就可以再回到书本上,学习那些更复杂的内容了。
如果你已经知道如何编程,那么,你对一些介绍性的内容一定不会感到新鲜了(但是,文中可能到处都有一些让人惊讶的细节)。你可以快速阅读前面的章节,从而了解Python是如何工作的,或者阅读附录A,它是基于我的在线Python教程“Instant Python”写成的。它会让你快速了解很多重要的Python概念。有了大概印象后,你可以直接跳到第10章(讨论Python标准库)。
本书的后半部分包括10个程序设计项目,展示了Python语言的不同功能。不管是新手还是专家,都会对这些项目感兴趣。尽管后面项目中的一些内容对于没有经验的程序员来说可能有些难,但是(在读完本书的前半部分后)按照项目顺序完成应该还是可能的。
这些项目包括了多方面的主题,多数对你编写自己的程序都很有用。你可以学会做一些你现在完全不会做的事情,比如创建聊天服务器、点对点的文件共享系统或者功能完备的计算机图形游戏等。乍一看,你会觉得很多内容都很难,但是到了最后,我想你会惊讶于它们实际上是如此简单。如果你想下载源代码,可以访问http://www.apress.com。
好了,冗长的介绍我自己都觉得烦了,那么我们就开始学习Python编程吧,从第1章或者附录A开始。祝你好运,编程愉快。
序言
新版的《Python基础教程》终于和大家见面了。如果算上这本书的前身Pratical Python,实际上这已经是第3版了。这本书也让我投入了近10年时间。这期间,Python发生了许多有趣的变化,我也在尽力更新我对这门语言的介绍。同时,Python也面临着在相当长的一段时间内最具标志性的变化:推出了第3版。在本书撰写时,最终版本还没有发布,但是其特性已跃然纸上,并且已经推出了几个可用的版本。这次升级带来一个很有意思的挑战,就是它不再向下兼容。换句话说,它并不是简单地增加一些功能,让我可以挑挑捡捡地写进书中。它同时还会改变已经存在的语言,也就是说Python 2.5版本中的某些特性在新版本将不会保留。
要是整个Python社群都立即着手转换到新版本,更新所有遗留代码,那当然不会有什么问题。我只要讲解新的语言就可以了!但是,大量用旧版编写的代码还会存在,并且仍然有可能继续编写,直到第3版完全板上钉钉。
那么,怎么应付这个变化呢?首先,就算新版本有些不兼容的改变,但语言的大部分还是相同的。也就是说,如果我的程序完全用Python 2.5编写,基本上在Python 3上也能运行(在兼容版本2.6版上更不成问题)。对于那些不再正确的部分,我则比较保守一些,并且猜测Python 3完全被大家接受还需要一定时间。本书基本上基于2.5版本,显著的改变会通过文字体现出来。除此之外,我还增加了一个附录D,概要介绍了一些主要改变。对于大多数读者来说,我觉得应该够了。
在撰写本书第2版时,我得到了许多人的帮助。就像在写前两版(本书第1版和之前的Pratical Python)一样,Jason Gilmore扶我上马,并且在项目进展的过程中扮演了重要角色。Richard Dal Porto、Frank Pohlmann和Dominic Shakeshaft在过程中也常助我一臂之力。Richard Taylor至关重要,他要确保代码完全正确(如果还是有错,大家骂我好了),而Marilyn Smith为我的写作润色不少。我还要感谢Apress的其他同仁们,包括Liz Berry、Beth Christmas、Steve Anglin和Tina Nielsen,还有那些帮我修订错误以及提出宝贵意见的读者们,其中包括Bob Helmbold和Waclaw Kusnierczyk。当然,我还要感谢所有那些将本书的前两版本买回家的读者们。
媒体评论
本书系统全面地讲解了Python语言,其中介绍的一系列项目是本书最大的亮点。
——Robert A. Gibson,软件工程师
在介绍新语言的图书中,本书是我见过的最优秀的一本,循序渐进,可读性强。我强烈推荐这本书。
——Amazon.com
【插图】
Python基础教程:第2版(经典教程的全新改版,10个项目引人入胜)
在线试读:
- 第1章
- 第2章