具体描述
本书介绍Python 语言的基础知识及其在各个领域的具体应用,基于最新版本3.x。书中首先介绍了Python 语言的一些必备基本知识,然后介绍了在商业、科研以及艺术领域使用Python 开发各种应用的实例。文字简洁明了,案例丰富实用,是一本难得的Python 入门手册。
作者简介
Bill Lubanovic
现为Penguin Computing公司高级软件工程师。1977年开始开发Unix软件,1981年开始开发GUI软件,1990年开始开发数据库软件,1993年开始开发Web软件。与人合著有Linux System Administration。
目录信息
第1章 Python初探 1
1.1 真实世界中的Python 5
1.2 Python与其他语言 5
1.3 为什么选择Python 7
1.4 何时不应该使用Python 8
1.5 Python 2与Python 3 8
1.6 安装Python 9
1.7 运行Python 9
1.7.1 使用交互式解释器 9
1.7.2 使用Python文件 10
1.7.3 下一步 11
1.8 禅定一刻 11
1.9 练习 11
第2章 Python基本元素:数字、字符串和变量 13
2.1 变量、名字和对象 13
2.2 数字 16
2.2.1 整数 17
2.2.2 优先级 20
2.2.3 基数 21
2.2.4 类型转换 22
2.2.5 一个int型有多大 23
2.2.6 浮点数 24
2.2.7 数学函数 24
2.3 字符串 24
2.3.1 使用引号创建 25
2.3.2 使用str()进行类型转换 27
2.3.3 使用 转义 27
2.3.4 使用+ 拼接 28
2.3.5 使用* 复制 28
2.3.6 使用[] 提取字符 28
2.3.7 使用[start:end:step]分片 29
2.3.8 使用len()获得长度 31
2.3.9 使用split()分割 32
2.3.10 使用join()合并 32
2.3.11 熟悉字符串 32
2.3.12 大小写与对齐方式 33
2.3.13 使用replace()替换 34
2.3.14 更多关于字符串的内容 35
2.4 练习 35
第3章 Python容器:列表、元组、字典与集合 36
3.1 列表和元组 36
3.2 列表 37
3.2.1 使用[] 或list()创建列表 37
3.2.2 使用list()将其他数据类型转换成列表 37
3.2.3 使用[offset]获取元素 38
3.2.4 包含列表的列表 39
3.2.5 使用[offset]修改元素 39
3.2.6 指定范围并使用切片提取元素 40
3.2.7 使用append()添加元素至尾部 40
3.2.8 使用extend()或+=合并列表 40
3.2.9 使用insert()在指定位置插入元素 41
3.2.10 使用del删除指定位置的元素 41
3.2.11 使用remove()删除具有指定值的元素 42
3.2.12 使用pop()获取并删除指定位置的元素 42
3.2.13 使用index()查询具有特定值的元素位置 42
3.2.14 使用in判断值是否存在 42
3.2.15 使用count()记录特定值出现的次数 43
3.2.16 使用join()转换为字符串 43
3.2.17 使用sort()重新排列元素 44
3.2.18 使用len()获取长度 44
3.2.19 使用= 赋值,使用copy()复制 45
3.3 元组 46
3.3.1 使用()创建元组 46
3.3.2 元组与列表 47
3.4 字典 47
3.4.1 使用{}创建字典 48
3.4.2 使用dict()转换为字典 48
3.4.3 使用[key]添加或修改元素 49
3.4.4 使用update()合并字典 50
3.4.5 使用del删除具有指定键的元素 51
3.4.6 使用clear()删除所有元素 51
3.4.7 使用in 判断是否存在 51
3.4.8 使用[key]获取元素 52
3.4.9 使用keys()获取所有键 52
3.4.10 使用values()获取所有值 53
3.4.11 使用items()获取所有键值对 53
3.4.12 使用= 赋值,使用copy()复制 53
3.5 集合 53
3.5.1 使用set()创建集合 54
3.5.2 使用set()将其他类型转换为集合 54
3.5.3 使用in测试值是否存在 55
3.5.4 合并及运算符 56
3.6 比较几种数据结构 58
3.7 建立大型数据结构 59
3.8 练习 60
第4章 Python外壳:代码结构 61
4.1 使用# 注释 61
4.2 使用 连接 62
4.3 使用if、elif 和else进行比较 63
4.4 使用while进行循环 66
4.4.1 使用break跳出循环 66
4.4.2 使用continue跳到循环开始 67
4.4.3 循环外使用else 67
4.5 使用for迭代 68
4.5.1 使用break跳出循环 69
4.5.2 使用continue跳到循环开始 69
4.5.3 循环外使用else 69
4.5.4 使用zip()并行迭代 70
4.5.5 使用range()生成自然数序列 71
4.5.6 其他迭代方式 71
4.6 推导式 72
4.6.1 列表推导式 72
4.6.2 字典推导式 74
4.6.3 集合推导式 74
4.6.4 生成器推导式 74
4.7 函数 75
4.7.1 位置参数 79
4.7.2 关键字参数 79
4.7.3 指定默认参数值 79
4.7.4 使用*收集位置参数 80
4.7.5 使用**收集关键字参数 81
4.7.6 文档字符串 82
4.7.7 一等公民:函数 82
4.7.8 内部函数 84
4.7.9 闭包 84
4.7.10 匿名函数:lambda()函数 85
4.8 生成器 86
4.9 装饰器 87
4.10 命名空间和作用域 89
4.11 使用try和except处理错误 91
4.12 编写自己的异常 93
4.13 练习 94
第5章 Python盒子:模块、包和程序 95
5.1 独立的程序 95
5.2 命令行参数 96
5.3 模块和import语句 96
5.3.1 导入模块 96
5.3.2 使用别名导入模块 98
5.3.3 导入模块的一部分 98
5.3.4 模块搜索路径 98
5.4 包 99
5.5 Python 标准库 99
5.5.1 使用setdefault()和defaultdict()处理缺失的键 100
5.5.2 使用Counter()计数 101
5.5.3 使用有序字典OrderedDict()按键排序 103
5.5.4 双端队列:栈+队列 103
5.5.5 使用itertools迭代代码结构 104
5.5.6 使用pprint()友好输出 105
5.6 获取更多Python代码 105
5.7 练习 106
第6章 对象和类 107
6.1 什么是对象 107
6.2 使用class定义类 108
6.3 继承 109
6.4 覆盖方法 111
6.5 添加新方法 112
6.6 使用super从父类得到帮助 112
6.7 self的自辩 113
6.8 使用属性对特性进行访问和设置 114
6.9 使用名称重整保护私有特性 117
6.10 方法的类型 118
6.11 鸭子类型 119
6.12 特殊方法 120
6.13 组合 123
6.14 何时使用类和对象而不是模块 124
6.15 练习 126
第7章 像高手一样玩转数据 127
7.1 文本字符串 127
7.1.1 Unicode 127
7.1.2 格式化 134
7.1.3 使用正则表达式匹配 137
7.2 二进制数据 144
7.2.1 字节和字节数组 144
7.2.2 使用struct转换二进制数据 145
7.2.3 其他二进制数据工具 148
7.2.4 使用binascii()转换字节/ 字符串 149
7.2.5 位运算符 149
7.3 练习 149
第8章 数据的归宿 152
8.1 文件输入/输出 152
8.1.1 使用write()写文本文件 153
8.1.2 使用read()、readline()或者readlines()读文本文件 154
8.1.3 使用write()写二进制文件 156
8.1.4 使用read()读二进制文件 157
8.1.5 使用with自动关闭文件 157
8.1.6 使用seek()改变位置 157
8.2 结构化的文本文件 159
8.2.1 CSV 159
8.2.2 XML 161
8.2.3 HTML 163
8.2.4 JSON 163
8.2.5 YAML 165
8.2.6 安全提示 166
8.2.7 配置文件 167
8.2.8 其他交换格式 168
8.2.9 使用pickle序列化 168
8.3 结构化二进制文件 169
8.3.1 电子数据表 169
8.3.2 层次数据格式 169
8.4 关系型数据库 170
8.4.1 SQL 170
8.4.2 DB-API 172
8.4.3 SQLite 172
8.4.4 MySQL 174
8.4.5 PostgreSQL 174
8.4.6 SQLAlchemy 174
8.5 NoSQL数据存储 179
8.5.1 dbm family 180
8.5.2 memcached 180
8.5.3 Redis 181
8.5.4 其他的NoSQL 189
8.6 全文数据库 189
8.7 练习 190
第9章 剖析Web 191
9.1 Web 客户端 192
9.1.1 使用telnet进行测试 193
9.1.2 Python的标准Web库 194
9.1.3 抛开标准库:requests 195
9.2 Web 服务端 196
9.2.1 最简单的Python Web服务器 196
9.2.2 Web服务器网关接口 198
9.2.3 框架 198
9.2.4 Bottle 198
9.2.5 Flask 201
9.2.6 非Python的Web服务器 204
9.2.7 其他框架 206
9.3 Web服务和自动化 207
9.3.1 webbrowser模块 207
9.3.2 Web API和表述性状态传递 208
9.3.3 JSON 209
9.3.4 抓取数据 209
9.3.5 用BeautifulSoup来抓取HTML 209
9.4 练习 210
第10章 系统 212
10.1 文件 212
10.1.1 用open()创建文件 212
10.1.2 用exists()检查文件是否存在 213
10.1.3 用isfile()检查是否为文件 213
10.1.4 用copy()复制文件 213
10.1.5 用rename()重命名文件 214
10.1.6 用link()或者symlink()创建链接 214
10.1.7 用chmod()修改权限 214
10.1.8 用chown()修改所有者 214
10.1.9 用abspath()获取路径名 215
10.1.10 用realpath()获取符号的路径名 215
10.1.11 用remove()删除文件 215
10.2 目录 215
10.2.1 使用mkdir()创建目录 215
10.2.2 使用rmdir()删除目录 215
10.2.3 使用listdir()列出目录内容 216
10.2.4 使用chdir()修改当前目录 216
10.2.5 使用glob()列出匹配文件 216
10.3 程序和进程 217
10.3.1 使用subprocess创建进程 218
10.3.2 使用multiprocessing创建进程 219
10.3.3 使用terminate()终止进程 219
10.4 日期和时间 220
10.4.1 datetime模块 221
10.4.2 使用time模块 223
10.4.3 读写日期和时间 225
10.4.4 其他模块 227
10.5 练习 228
第11章 并发和网络 229
11.1 并发 230
11.1.1 队列 231
11.1.2 进程 231
11.1.3 线程 232
11.1.4 绿色线程和gevent 234
11.1.5 twisted 236
11.1.6 asyncio 238
11.1.7 Redis 238
11.1.8 队列之上 241
11.2 网络 241
11.2.1 模式 242
11.2.2 发布-订阅模型 242
11.2.3 TCP/IP 245
11.2.4 套接字 246
11.2.5 ZeroMQ 250
11.2.6 scapy 253
11.2.7 网络服务 253
11.2.8 Web服务和API 255
11.2.9 远程处理 256
11.2.10 大数据和MapReduce 260
11.2.11 在云上工作 261
11.3 练习 264
第12章 成为真正的Python开发者 265
12.1 关于编程 265
12.2 寻找Python代码 265
12.3 安装包 266
12.3.1 使用pip 266
12.3.2 使用包管理工具 267
12.3.3 从源代码安装 267
12.4 集成开发环境 268
12.4.1 IDLE 268
12.4.2 PyCharm 268
12.4.3 IPython 269
12.5 命名和文档 269
12.6 测试代码 270
12.6.1 使用pylint、pyflakes和pep8检查代码 270
12.6.2 使用unittest进行测试 272
12.6.3 使用doctest进行测试 276
12.6.4 使用nose进行测试 277
12.6.5 其他测试框架 278
12.6.6 持续集成 278
12.7 调试Python代码 278
12.8 使用pdb进行调试 279
12.9 记录错误日志 284
12.10 优化代码 286
12.10.1 测量时间 286
12.10.2 算法和数据结构 288
12.10.3 Cython、NumPy和C扩展 289
12.10.4 PyPy 289
12.11 源码控制 289
12.11.1 Mercurial 290
12.11.2 Git 290
12.12 复制本书代码 292
12.13 更多内容 293
12.13.1 书 293
12.13.2 网站 293
12.13.3 社区 293
12.13.4 大会 294
12.14 后续内容 294
附录A Python的艺术 295
附录B 工作中的Python 307
附录C Python的科学 320
附录D 安装Python 3 339
附录E 习题解答 349
附录F 速查表 380
作者介绍 383
封面介绍 383
· · · · · · (收起)
读后感
这本书对新手可能不太友好,但对有一定python基础的来说,讲得相当简洁、深入而透彻,高级特性讲得非常清晰,相比而言很多python入门教材和高级教程一般讲得过于抽象和具体。本人有其他语言基础和一点python经验,本书看起来相当爽,能看清python语言的筋骨和光芒,前半篇满满...
这本书对新手可能不太友好,但对有一定python基础的来说,讲得相当简洁、深入而透彻,高级特性讲得非常清晰,相比而言很多python入门教材和高级教程一般讲得过于抽象和具体。本人有其他语言基础和一点python经验,本书看起来相当爽,能看清python语言的筋骨和光芒,前半篇满满...
从4.7开始,作者就写的特别简略,一点都讲不透,给的示例代码也特别不好,不知道作者是不是水平不行啊。4.7这一段,我都是网上各种视频,教程看了一遍,才算过的。 作者写的4.7函数这一段,写的太差了!我只能找别的教程看过这一段的概念,然后再接着看,不知道后面还有没坑。
浏览完了电子版。感觉是一本很有诚意的入门书。作者真心想教会你很多东西。前半部分写的非常好。但是从并行那章开始,感觉开始看不懂了,因为本身比较难,写的也不详细(估计因为篇幅)。接下来的网络部分写的有点看不懂。附录罗列的东西好多,作者懂得很多。总之这本书入门的...
这本书对新手可能不太友好,但对有一定python基础的来说,讲得相当简洁、深入而透彻,高级特性讲得非常清晰,相比而言很多python入门教材和高级教程一般讲得过于抽象和具体。本人有其他语言基础和一点python经验,本书看起来相当爽,能看清python语言的筋骨和光芒,前半篇满满...
用户评价
这本书的深度在某些方面令人印象深刻,但在另一些关键领域却显得有些保守。比如,在探讨面向未来的技术趋势时,我对它在人工智能和深度学习集成方面的论述感到略有不足。虽然提到了如何利用Python框架进行模型训练的基础步骤,但对于模型部署、容器化管理(如Docker与Kubernetes在Python应用中的结合),以及持续集成/持续部署(CI/CD)在现代软件工程中的实践,介绍得非常简略,仿佛这些只是锦上添花的功能,而非现代应用开发的核心环节。对于一本宣称涵盖“应用”的书籍来说,这种对现代DevOps实践的忽视,使得它在时效性上略显滞后。我购买这本书是期望它能涵盖从代码编写到最终稳定交付的完整生命周期,但目前来看,它似乎止步于“代码完成”的阶段。如果能在后续的版本中,加强对云原生技术栈与Python生态系统结合的探讨,这本书的适用范围和前瞻性将会大大拓宽,真正成为一本能指导开发者迈向工业级应用的全景指南。
这本书的排版和印刷质量无可挑剔,纸张的触感和墨水的清晰度都体现了出版社的专业水准。在内容编排上,作者采用了模块化的结构,每一章似乎都独立地解决一个特定的技术难题,这对于经验丰富的工程师来说,或许可以作为快速查阅和参考手册来使用。然而,对于一个渴望系统学习的读者而言,这种强烈的模块化反而造成了知识间的割裂感。我阅读时经常发现,某一章引用的某个函数或类,其详细定义却出现在了三章之后,或者仅仅是一笔带过,要求读者自行去寻找上下文。这使得阅读体验变得有些支离破碎,就像在拼凑一幅没有完整说明书的巨幅拼图。如果能有一个更清晰的、贯穿始终的项目线索,将这些看似独立的“应用”模块串联起来,形成一个有机的整体,那么这本书的教学效果会大大提升。现在它更像是一本优秀的技术白皮书汇编,而非一本循序渐进的教材。我不得不花大量时间在不同章节间来回跳转,以确保我对整个技术栈的理解是一致和连贯的。
我特别关注了书中关于数据处理的部分,因为它是我工作中最常接触的领域。书中关于如何使用特定库进行大规模数据清洗和转换的描述,确实展现了其效率的强大。然而,我注意到,在讨论这些高性能计算场景时,作者似乎完全默认了读者对性能瓶颈和优化策略已经有所了解。例如,当涉及到内存效率问题时,书中直接建议使用某种特定的迭代器模式,但对于为什么这种模式比传统的列表推导式在特定数据规模下表现更优的底层原因,阐述得不够清晰。这种“我们应该这样做,因为它更快”的论断,缺乏必要的科学论证和对比分析。我更希望看到的是,在展示“如何做”的同时,也能深入剖析“为什么这样”。如果能增加一些针对不同数据规模和数据类型下,不同方法性能对比的图表和分析,哪怕是简短的附录,这本书的参考价值和说服力都会得到极大的增强。目前的呈现方式,更像是行业惯例的罗列,而非基于深入洞察的教学。
我一直试图在浩如烟海的编程书籍中找到一本能够真正将理论与实际工作流程紧密结合的宝典,而这本《Python语言及其应用》在某种程度上确实展现了这种潜力。从其厚度和内容密度来看,作者显然是在致力于构建一个全面的知识体系。然而,我个人在阅读过程中,感觉它在“应用”这一块的着墨过多,而对“语言本身”的内涵挖掘得不够深入。例如,在讨论到异步编程模型时,书中直接给出了一个复杂的网络爬虫示例,虽然效果惊人,但对于GIL(全局解释器锁)的底层机制,以及`asyncio`库的设计哲学,讲解得相对简略,更像是一种“拿来即用”的指导。这使得我更像是一个代码的执行者,而非其背后的设计者。我期待的“应用”应该是建立在扎实语言功底之上的巧妙布局,而不是仅仅展示如何堆砌现有的库函数来解决问题。对于那些追求深入理解Python虚拟机和内存管理的读者来说,这本书可能需要搭配其他更侧重底层原理的资料一起阅读,才能达到预期的效果。它的价值在于展示了Python的“能力边界”,但构建这个能力边界的“砖块”本身,描述得略显单薄。
这本书的封面设计非常引人注目,那种深邃的蓝色调配上简洁的字体,立刻给人一种专业、可靠的感觉。我本来就是对编程领域抱有浓厚兴趣的新手,在书店里翻到这本书时,那种直击人心的设计感让我忍不住想深入了解一下。不过,当我真正开始阅读后,我发现内容似乎更侧重于某种特定的工业应用案例,对于像我这样想从最基础的语法结构和编程思维开始建立认知的初学者来说,可能需要花费更多的精力去消化那些复杂的流程图和算法描述。它不像我预期的那样,能提供一个平滑的学习曲线,更像是一个直接将你带入到高阶实践中的跳板。书中对于环境配置的步骤讲解得非常详尽,这一点值得称赞,但随后的代码示例,虽然功能强大,但对于初次接触编程概念的人来说,可能显得过于跳跃,很多核心概念的引入缺乏循序渐进的铺垫。我希望能看到更多关于数据结构和面向对象编程思想的通俗易懂的讲解,而不是直接面对一个解决特定问题的完整框架。整体感觉这本书更适合已经具备一定编程基础,希望快速将所学知识应用于特定场景的开发者。
写得真的好。相对于其他教程来说,作者对python真的是有很深入的理解。讲到了很多在别的教程里只有在中高级才会涉及的内容,但是又并没有讲得非常晦涩,而是自然引出,深入浅出。中文版翻译会造成一些误解,一定要看中文版的话建议和英文版对照着看。涉及到的中高级的知识,因为在讲初级入门知识的时候就一起讲到了,即使学完以后作为工具参考书,也值得一直留存。私以为这本书虽然目标受众也包括小白,但是让小白们来评价并不合适,因为没有一定的python经验的话,他们并不知道这本书的匠心帮他们绕过了多少坑。全书中散落着挺多让人会心一笑的梗,可见作者确实有实际经验也有相关的广泛阅读。
理解是挺好理解,但我就是记不住,甚至差点忘记看过这本(扶额(python作为三外最终以失败收场
Python相关的简易版百科全书。
很浅~
理解是挺好理解,但我就是记不住,甚至差点忘记看过这本(扶额(python作为三外最终以失败收场