具体描述
本书包括Python 程序设计的方方面面,首先从Python 的安装开始,随后介绍了Python 的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句。然后循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器。此后探讨了如何将Python 与数据库、网络、C 语言等工具结合使用,从而发挥出Python 的强大功能,同时介绍了Python 程序测试、打包、发布等知识。最后,作者结合前面讲述的内容,按照实际项目开发的步骤向读者介绍了几个具有实际意义的Python 项目的开发过程。
本书内容涉及的范围较广,既能为初学者夯实基础,又能帮助程序员提升技能,适合各个层次的Python开发人员阅读参考。
作者简介
Magnus Lie Hetland
挪威科技大学副教授,教授算法。黑客,喜欢钻研新锐编程语言,是Python语言的坚定支持者。他写过很多Python方面的书和在线教程,比如深受读者欢迎的网上教程Instant Python。此外他还是一名业余话剧演员,从1985年首次登台至今,已经参演数十部话剧。
目录信息
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 真正的全捕捉 132
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 关闭文件 212
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 多个连接 247
14.3.1 使用SocketServer进行分叉和线程处理 248
14.3.2 带有select和poll的异步I/O 249
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和Web 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安全风险 263
15.2.5 简单的CGI脚本 263
15.2.6 使用cgitb调试 263
15.2.7 使用cgi模块 264
15.2.8 简单的表单 266
15.3 更进一步:mod_python 267
15.3.1 安装mod_python 268
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 276
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:即时标记 320
20.1 问题是什么 320
20.2 有用的工具 321
20.3 准备工作 321
20.4 初次实现 322
20.4.1 找出文本块 322
20.4.2 添加一些标记 323
20.5 再次实现 324
20.5.1 处理程序 325
20.5.2 处理程序的超类 325
20.5.3 规则 327
20.5.4 规则的超类 328
20.5.5 过滤器 328
20.5.6 分析器 328
20.5.7 构造规则和过滤器 329
20.5.8 整合 332
20.6 进一步探索 336
第21章 项目2:画幅好画 337
21.1 问题 337
21.2 有用的工具 338
21.3 准备工作 338
21.4 初次实现 339
21.4.1 用ReportLab画图 339
21.4.2 生成折线 340
21.4.3 编写原型 341
21.5 再次实现 342
21.5.1 获取数据 342
21.5.2 使用LinePlot类 343
21.6 进一步探索 344
第22章 项目3:万能的XML 345
22.1 问题 345
22.2 有用的工具 346
22.3 准备工作 347
22.4 初次实现 348
22.4.1 创建简单的内容处理器 348
22.4.2 生成HTML页面 350
22.5 再次实现 352
22.5.1 调度程序的混入类 352
22.5.2 实现首部、页脚和默认的处理程序 354
22.5.3 对目录的支持 354
22.5.4 事件处理程序 355
22.6 进一步探索 358
第23章 项目4:新闻聚合 359
23.1 问题 359
23.2 有用的工具 360
23.3 准备工作 360
23.4 初次实现 360
23.5 再次实现 363
23.6 进一步探索 369
第24章 项目5:虚拟茶话会 371
24.1 问题 371
24.2 有用的工具 371
24.3 准备工作 372
24.4 初次实现 373
24.4.1 ChatServer类 373
24.4.2 ChatSession类 374
24.4.3 整合 376
24.5 再次实现 377
24.5.1 基础命令解释 378
24.5.2 房间 378
24.5.3 登录和退出房间 379
24.5.4 主聊天室 379
24.5.5 新的服务器 380
24.6 进一步探索 384
第25章 项目6:使用CGI进行远程编辑 385
25.1 问题 385
25.2 有用的工具 385
25.3 准备工作 386
25.4 初次实现 386
25.5 再次实现 387
25.5.1 创建文件名表单 387
25.5.2 创建编辑器的脚本 388
25.5.3 编写保存脚本 389
25.5.4 运行编辑器 390
25.6 进一步探索 391
第26章 项目7:自定义电子公告板 393
26.1 问题 393
26.2 有用的工具 394
26.3 准备工作 394
26.4 初次实现 395
26.5 再次实现 398
26.5.1 编写Main脚本 399
26.5.2 编写View脚本 400
26.5.3 编写Edit脚本 401
26.5.4 编写Save脚本 403
26.5.5 尝试使用 404
26.6 进一步探索 404
第27章 项目8:使用XML-RPC进行文件共享 406
27.1 问题 406
27.2 有用的工具 407
27.3 准备工作 407
27.4 初次实现 408
27.4.1 实现一个简单的节点 408
27.4.2 尝试使用首次实现 413
27.5 再次实现 414
27.5.1 创建客户端界面 414
27.5.2 引发异常 415
27.5.3 验证文件名 416
27.5.4 尝试使用再次实现 419
27.6 进一步探索 420
第28章 项目9:文件共享2——GUI版本 421
28.1 问题 421
28.2 有用的工具 421
28.3 准备工作 421
28.4 初次实现 422
28.5 再次实现 424
28.6 进一步探索 427
第29章 项目10:DIY街机游戏 428
29.1 问题 428
29.2 有用的工具 429
29.2.1 pygame 429
29.2.2 pygame.locals 429
29.2.3 pygame.display 430
29.2.4 pygame.font 430
29.2.5 pygame.sprite 430
29.2.6 pygame.mouse 431
29.2.7 pygame.event 431
29.2.8 pygame.image 431
29.3 准备工作 431
29.4 初次实现 432
29.5 再次实现 434
29.6 进一步探索 442
附录A 简明版本 443
附录B Python参考手册 450
附录C 在线资源 461
附录D Python 3.0 464
· · · · · · (收起)
读后感
在python2和3交替的时代学python是个很麻烦的事情。因为版本的变化还是挺大的,语法和特性,以及标准库都有较多的改变。因此,很难找本合适的教材,替不喜欢读英文的新手找中文版教材就更难了。Learning Python确实也不错,但最新版的中文版貌似被搞得很囧。其他的入门书籍,说...
做为python,又或者做为一门语言教程书籍。 这本书讲得非常不错! 特别是作者独特的写法以及幽默。 有时作者会将不同的理解方式和实现方式放在一个例子中。 更多的时候作者会有颇为有趣的幽默来让读者感到轻松愉快。 我是从java、php过度到这门语言的,看起来丝毫不吃力。 ...
Python基础教程 第1页 http://book.douban.com/annotation/28589400/ Python基础教程 第2页 http://book.douban.com/annotation/28589439/ Python基础教程 第3页 http://book.douban.com/annotation/28589481/ Python基础教程 第4页 http://book.douban.com/annotation...
http://woodpecker.org.cn/diveintopython3/index.html 上面是地址,看这本书,会让你的学习变成一种享受。 而python基础教程,说实话,我看得非常痛苦,我不知道为何很多人力捧此书,说是什么入门第一书。 请新手自己比较一番,就能得出结论了。 另外,python现在的最新版本...
在python2和3交替的时代学python是个很麻烦的事情。因为版本的变化还是挺大的,语法和特性,以及标准库都有较多的改变。因此,很难找本合适的教材,替不喜欢读英文的新手找中文版教材就更难了。Learning Python确实也不错,但最新版的中文版貌似被搞得很囧。其他的入门书籍,说...
用户评价
这本书的组织结构非常清晰,逻辑性很强。每个章节都围绕着一个主题展开,并且层层递进。从基础语法到进阶特性,过渡自然流畅,不会让人感到突兀。作者对于每个知识点的讲解都非常全面,不仅给出了概念的定义,还详细说明了它的原理、用法和注意事项。比如在讲解字符串(string)时,作者不仅列举了大量的内置方法,还解释了字符串的不可变性以及它在内存中的表示方式,这对于深入理解字符串的操作非常有帮助。我特别欣赏书中对一些“陷阱”的提醒,比如在循环中修改列表可能带来的问题,以及一些容易混淆的函数参数传递方式。这些细节的补充,让我少走了很多弯路。而且,这本书的排版设计也很人性化,代码块清晰明了,关键术语也用加粗等方式突出显示,阅读起来非常舒服。对于想要系统学习Python的朋友来说,这本书绝对是值得反复研读的经典之作。
我对这本书的第一个印象就是它的严谨性。作者在讲解每一个概念的时候,都力求精准,避免了那些含糊不清的表述。比如在介绍列表(list)和元组(tuple)的时候,作者不仅阐述了它们的核心区别(可变性),还通过对比操作(增删改查)以及内存占用等方面的细微差别,让我深刻理解了它们各自的适用场景。书中对于异常处理(try-except)的讲解也相当到位,教会了我如何优雅地处理程序运行时可能出现的错误,这对于编写健壮的代码至关重要。而且,作者在介绍文件I/O操作时,不仅讲解了基本的读写,还深入到文件模式、编码格式等细节,这对于处理不同类型的文件非常有帮助。这本书的例子代码质量很高,很多例子都非常有代表性,直接应用到实际工作中也毫无压力。它不是那种“快速上手,立马能写个小程序”的书,而是更侧重于让你打下扎实的基础,能够从根本上理解Python的运行机制,这对长远的学习和发展非常有益。
这本书给我最大的启发在于它所传递的“Pythonic”编程思想。作者在讲解过程中,不仅仅是告诉你“怎么做”,更重要的是告诉你“为什么要这样做”。比如在讲解列表推导式(list comprehension)时,作者不仅展示了它比传统循环更简洁高效的写法,还强调了它在提高代码可读性和效率方面的优势。通过这本书,我开始学会用更简洁、更优雅的方式来编写Python代码,逐渐摆脱了那种“C语言风格”的写法。书中还提到了Python的一些设计哲学,比如“Readability counts.”(可读性很重要),这让我更加重视代码的规范性和可维护性。而且,作者在介绍一些高级概念,比如切片(slicing)的强大功能和多维切片的应用时,也让我看到了Python在数据处理和科学计算方面的巨大潜力。这本书不仅仅是一本技术书籍,更是一本能够塑造编程思维的书,它让我看到了Python的魅力,也让我对未来的学习充满了期待。
这本书简直是Python入门的宝藏!我之前对编程完全是零基础,看到各种术语就头疼,但是这本书用非常平实易懂的语言,循序渐进地讲解了Python的基本概念。从最基础的变量、数据类型,到控制流语句(if/else、for、while),再到函数、模块……每一个知识点都配有清晰的代码示例,并且代码都相当精炼,一看就懂。我特别喜欢作者讲解函数的部分,把函数的参数、返回值、作用域这些看似复杂的东西掰开了揉碎了讲,让我一下子就明白了。而且,书中还提到了面向对象编程的初步概念,虽然只是点到为止,但已经足够让我对这个重要的编程范式有一个初步的认识,为以后深入学习打下了坚实的基础。读这本书的时候,我常常会自己动手敲代码,每一次成功运行都给我带来了巨大的成就感。它不仅仅是讲解知识,更是在培养我的编程思维和解决问题的能力。对于像我这样想从零开始学习Python的朋友来说,这本书绝对是最佳的启蒙读物,没有之一。
我是在朋友的推荐下开始看这本书的,本来以为会是一本枯燥的技术手册,没想到读起来竟然这么有趣!作者的语言风格非常幽默风趣,很多时候用一些生活中的类比来解释抽象的编程概念,让我觉得学习过程一点都不累。比如讲解迭代器(iterator)和生成器(generator)的时候,作者用了“取餐排队”的比喻,让我一下子就理解了它们按需生成值的特性。而且,书中还穿插了一些Python的历史和发展,以及一些非常实用的编程技巧,比如代码风格的建议、调试的常用方法等等,这些内容虽然不是核心知识点,但却让整本书的阅读体验更加丰富和人性化。我特别喜欢书中关于装饰器(decorator)的讲解,之前一直觉得这个东西很神奇,看了这本书之后,才明白它其实是一种非常优雅的函数增强方式,并且在Web开发、日志记录等场景下有着广泛的应用。总的来说,这本书在知识的深度和趣味性之间找到了一个绝佳的平衡点。
【第1章 ~ 第11章】自学Python的第一本书,入门还可以,就是介绍的浅了,看了11章决定换书《Learning Python》巩固和继续学习。扣一星给翻译,第9章翻译出现语句读不通的情况太多。
像教科书,没有Python学习手册好
入门来说很不错的书。但是想进一步深入的话,很多地方都浅尝辄止,就不好说咯。
前面的基础语法教学很实践性很强,后面项目实战部分,初次实现+再次实现的思路很不错,但是后面那么多面向对象的要求+网络部分还需要配置服务器,就对初学者很不友好了。
有点头疼,有些地方,讲的不够细,最主要是python2.7,我却想学python3.6