科技>计算机>编程语言
高阶Python:代码精进之路  

高阶Python:代码精进之路  "

作者:李辉,韩慧昌
ISBN:9787121430893
定价:¥168.0
字数:812千字
页数:580
出版时间:2022-03
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书详细地介绍了Python语言的一些高级功能以及常见数据类型的高级用法,非常适合有一定基础的读者深入学习Python编程。本书的主要内容包括常见内置类型(数值、字符串和集合等)的高级用法和潜在的陷阱,用于文本处理的格式化方法和正则表达式,用于数值计算和大规模数据处理的math包和numpy包等。此外,文件存储、随机数生成和图表绘制也是本书的重要内容。本书还开发了一个“RPN脚本解释器”项目,该项目贯穿本书的各个章节,通过对该项目的学习,你也可以开发出自己的“语言”。

前言

译者序 Python是一门解释型的脚本语言,被广泛应用于传统的软件开发、统计分析和人工智能等领域。Python在最新的TIOBE开发语言排行榜中位列第三,是名副其实的热门语言。市面上关于Python的图书有许多,但大多是入门书或者只是简单介绍Python语法后便转向其他内容,针对Python语言高级开发的图书却很少。这也是我决定翻译本书的最重要原因。 Python语言的语法简洁且易于上手,但想要精通这门语言却并不容易。本书通过对Python的高级功能、重要模块和编程技巧的讲解,帮助你精通Python这门强大的语言。书中重点介绍了如字符串、列表等基础数据类型的高级用法,大部分入门书不会介绍诸如装饰器、魔术方法和二进制文件处理等内容,以及一些重要内置软件包和第三方软件包的内容。这些内容在Python高级开发中都很重要,却很容易被初学者忽略。为了帮助读者理解,本书还包含了大量的例子。如果你已经在使用Python或对这门语言有一定的了解,那么阅读本书一定能让你受益良多。 本书的翻译在语言风格上尽量与原著接近,在能描述清楚的情况下尽可能地直译作者的原意。对于一些在中文中没有统一规范的技术名词,我们会在括号中保留英文原词来帮助读者理解内容。 本书的翻译工作从2019年12月开始,我和搭档韩慧昌经历近5个月的努力最终完成。前言和第1~8章、附录部分由我翻译,第9~15章由韩慧昌翻译,翻译完成后由我统一修改定稿。为了保证翻译质量,整个翻译过程包含大意粗翻、内容精翻和译者互校等环节,本书译稿的每章都经过至少五遍阅读和修订。希望最终的翻译内容能够使读者满意。 本书内容丰富,涉及的知识点广泛,在翻译期间,它几乎占据了我全部的业余时间。这里我要感谢我的家人,也是本书的另一名译者对我的支持,他在生活上和本书的翻译上给我提供了非常重要的帮助。此外我还要特别感谢博文视点的编辑张春雨,他在翻译过程中为我提供了宝贵意见。 在本书翻译期间,正值新冠肺炎疫情在全球肆虐,这可能是自我出生以来人类经历的最大危机。在大家的共同努力下,疫情在中国已经得到了有效的控制,但一些海外地区的情况依然严峻。希望在本书出版时,我们已经携手战胜了新冠病毒,恢复了正常的生活秩序。 ——李辉 2020年4月于北京科技大学 前言 如今,面向初学者的Python图书很多。越来越多的人希望掌握Python这门语言并使用它做开发。 这里特别推荐一本书Python Without Fear。这本书会手把手一步步带你走进Python的世界。当你掌握了语言基础但还没有达到“专家”级别时,又该做些什么呢?如何才能学到足够的编程知识呢? 这就是本书编写的目的:作为你入门Python后的学习用书。 【Python的特别之处是什么】 许多人被Python吸引,是因为它看起来比C++容易。也许是这样(至少入门时是),但是在所谓的“简单语言”背后,Python提供了很多功能强大的工具——被称作“包”(packages)的软件库。在多数情况下,这些工具可以帮助你完成大部分工作。利用这些包,你可以轻松地创建非常棒的软件,输出精美的图形,处理大量数据。 对于大多数人来说,掌握Python的编程技巧和高级功能可能要花费数年的时间。本书是为那些想立即掌握这些知识,更快地成为Python专家的人而写的。 【学习路线:如何开始】 本书为不同人群提供了不同的学习路线。 初学者:如果你曾经接触过Python但又有些生疏,你可以从第1章“基础知识复习”开始。否则,可以跳过第1章,或者简要浏览该部分内容。 有一定基础的进阶学习者:你可以先阅读第2章和第3章,这两章概述了字符串和列表的功能,还着重介绍了在初次学习中容易错过的一些数据结构的高级功能。 对Python有深入的了解,但还有所欠缺的资深学习者:从第4章开始,本章列出了22种Python独有的编程技巧,大多数人需要很长时间才能掌握这些技巧。 想要掌握特殊的功能:你可以从一个特殊领域开始,例如,第5、6和7章介绍了文本格式和正则表达式。讲述正则表达式语法的两章(分别是第6章和第7章)从基础知识入手,然后逐步深入,最后讨论了模式匹配技术的关键点。其他章节涉及其他领域,例如,第8章介绍了如何用不同的方法处理文本和二进制文件。 想学习高级数学和绘图软件:如果要进行绘图或财务、科学计算,请从第12章numpy(Numeric Python)软件包开始学习。该包为第13~15章中涉及的高级功能提供了基础。 【无处不在的代码和示例】 本书更多地使用简洁的示例来阐述高级的技术。推荐采用交互式方法(使用IDLE环境)学习,鼓励你输入程序并查看运行结果。粗体文本代表输入的内容、添加或更改的行。 本书中的一些应用程序是比较复杂的,包括Deck对象、功能齐全的RPN语言解释器及为用户提供多种选择的多功能股市程序等。对于这些复杂的应用程序,我们会从简单知识开始,最终覆盖到全部的知识。这种方法与许多其他书不同,一般的图书会无序地介绍很多种零散的知识,而没有体系和结构。在本书中,知识内容会按程序结构由浅入深地呈现出来。 【辅助学习工具】 为了便于读者学习,本书使用了大量的表格和配图。我们的经验是,虽然构思不佳的配图会分散注意力,但好的配图会很有价值。一张图片胜过千言万语。我们也相信,在讨论绘图和图形软件时,没有东西可以替代屏幕截图。 本书采用了一种特别的排版方式。文中会常出现三种特殊图标。 ①书中会使用图标指出本节你最终需要知道的事实结论。你可以在初次阅读该节时跳过该结论,读完整节后回头再阅读。 ②会有图标表示这是常规语法。语法(尤其是关键字和标点符号)以粗体显示,方括号(不加粗)表示可选参数。加粗方括号内是需要输入的数据。 省略号表示可以重复任意多次的元素。 ③会有图标表示内容与本章的其余部分关联性较弱。这里的内容是有关如何提高软件性能的。如果你对性能感兴趣,则需要特别注意这部分内容。 【你将学到什么】 本书涉及很多未在Python Without Fear或其他“入门”书中介绍的知识,下面列出了部分内容: 列表、集合和字典。 如何在文本分析中使用正则表达式和高级文本格式化技巧。 Python中的高级数值计算包及绘图工具包的使用方法,以及一些特殊数据类型,例如,Decimal(小数)和Fraction(分数)的用法。 在Python中操作二进制文件和文本文件的各种方式。 在Python中如何使用多个模块,同时避开“陷阱”。 面向对象编程的优点,如何使用魔术方法和其中的技巧。 【快乐的学习】 当你掌握了本书的部分或全部内容后,你会发现,Python通常使你能够用较少的代码来做大量的工作。这就是它越来越受欢迎的原因。Python不仅是一种省时的工具,而且使用Python进行开发也是一件愉快的事情,看到几行代码就可以做很多事情也会让你很开心。 祝你在快乐中收获满满!

目录

第1章 基础知识复习 1.1 Python快速入门 1.2 变量和命名 1.3 复合赋值运算符 1.4 Python算术运算符简介 1.5 基本数据类型:整数和浮点 1.6 基本输入与输出 1.7 函数定义 1.8 Python中的if语句 1.9 Python中的while语句 1.10 几个很棒的小应用程序 1.11 Python布尔运算符总结 1.12 函数的参数和返回值 1.13 前向引用问题 1.14 Python的字符串 1.15 Python列表(和一个很棒的排序应用程序) 1.16 for语句和range函数 1.17 Python元组 1.18 字典 1.19 集合 1.20 全局和局部变量 总结 习题 推荐项目 第2章 字符串高级功能 2.1 不可变的字符串 2.2 数据类型转换 2.3 字符串运算符(+、=、*、>等) 2.4 索引和切片 2.5 单字符函数 2.6 用join函数构建字符串 2.7 重要的字符串函数 2.8 二进制、八进制和十六进制转换函数 2.9 字符串的布尔方法 2.10 大小写转换方法 2.11 字符串的搜索和替换 2.12 使用split方法拆分字符串 2.13 从字符串中剥离字符 2.14 字符串对齐 总结 习题 推荐项目 第3章 高级列表功能 3.1 创建和使用Python列表 3.2 复制列表与复制列表变量 3.3 列表索引 3.3.1 正索引 3.3.2 负索引 3.3.3 使用enumerate生成索引号 3.4 从列表切片中获取数据 3.5 列表切片赋值 3.6 列表运算符 3.7 浅拷贝与深拷贝 3.8 列表函数 3.9 列表方法:修改列表 3.10 列表方法:获取列表信息 3.11 列表方法:重新排序 3.12 堆栈列表:RPN应用 3.13 reduce函数 3.14 lambda表达式(匿名函数) 3.15 列表推导式 3.16 字典和集合推导式 3.17 通过列表传递参数 3.18 多维列表 3.18.1 不平衡矩阵 3.18.2 创建任意大的矩阵 总结 习题 推荐项目 第4章 编程技巧、命令行和程序包 4.1 概述 4.2 22个编程技巧 4.2.1 根据需要使Python命令跨越多行 4.2.2 合理使用for循环 4.2.3 使用组合运算符(+=等) 4.2.4 进行多重赋值 4.2.5 使用元组赋值 4.2.6 使用高级元组赋值 4.2.7 使用列表和字符串“乘法” 4.2.8 返回多个值 4.2.9 使用循环和else关键字 4.2.10 使用布尔值和not运算符 4.2.11 将字符串视为字符列表 4.2.12 使用replace方法消除字符 4.2.13 不写不必要的循环 4.2.14 使用链式比较(n < x < m) 4.2.15 用函数列表模拟switch语句 4.2.16 正确使用is运算符 4.2.17 使用单行for循环 4.2.18 将多条语句压缩到一行 4.2.19 编写单行if/then/else语句 4.2.20 用range函数创建枚举值 4.2.21 在IDLE中减少效率低下的print函数的使用 4.2.22 用下画线分隔大数字 4.3 从命令行运行Python 4.3.1 在Windows系统上运行 4.3.2 在Macintosh系统上运行 4.3.3 使用pip或pip3下载软件包 4.4 编写和使用文档字符串 4.5 导入软件包 4.6 Python软件包简介 4.7 Python函数作为一类对象 4.8 可变长度参数列表 4.8.1 *args列表参数 4.8.2 **kwargs列表参数 4.9 装饰器和函数分析器 4.10 生成器 4.10.1 什么是迭代器 4.10.2 关于生成器 4.11 访问命令行参数 总结 习题 推荐项目 第5章 精确格式化文本 5.1 使用字符串格式说明符(%)进行格式化 5.2 %格式说明符 5.3 使用%创建可变宽度输出字段 5.4 全局函数format 5.5 format方法介绍 5.6 根据position(名称或索引)引用参数 5.7 repr转换与str转换 5.8 format函数/方法的spec字段 5.8.1 输出字段的宽度 5.8.2 文本对齐:fill和align字符 5.8.3 符号字符sign 5.8.4 前导“0”字符 5.8.5 千位分隔符 5.8.6 精度符号precision 5.8.7 将precision用于字符串格式化 5.8.8 类型说明符type 5.8.9 以二进制显示 5.8.10 以八进制和十六进制显示 5.8.11 显示百分数 5.8.12 二进制表示的例子 5.9 可变长字段 总结 习题 推荐项目 第6章 正则表达式 第1部分 6.1 正则表达式简介 6.2 实用案例:电话号码 6.3 改进匹配模式 6.4 正则表达式是如何工作的:编译与运行 6.5 忽略大小写和其他功能标志 6.6 正则表达式:基本语法摘要 6.6.1 元字符 6.6.2 字符集 6.6.3 模式量词 6.6.4 回溯、贪婪和非贪婪 6.7 一个实用的正则表达式案例 6.8 使用match对象 6.9 在字符串中搜索模式 6.10 迭代搜索findall 6.11 findall函数和分组问题 6.12 搜索重复模式 6.13 文本替换 总结 习题 推荐项目 第7章 正则表达式,第2部分 7.1 正则表达式高级语法摘要 7.2 非标记组 7.2.1 匹配规范数字示例 7.2.2 解决标记问题 7.3 贪婪匹配与非贪婪匹配 7.4 先行断言 7.5 使用先行断言检查多个模式 7.6 负向先行断言 7.7 命名组 7.8 re.split函数 7.9 Scanner类和RPN项目 7.10 RPN:使用扫描器做更多的事情 总结 习题 推荐项目 第8章 文本和二进制文件 8.1 两种文件格式:文本文件和二进制文件 8.1.1 文本文件 8.1.2 二进制文件 8.2 二进制文件读写方法摘要 8.3 文件/目录系统 8.4 处理文件打开异常 8.5 使用with关键字 8.6 读/写操作总结 8.7 文本文件操作详解 8.8 使用文件指针(seek) 8.9 将文本读入RPN项目 8.9.1 更新RPN解释器代码 8.9.2 从文本文件读取RPN 8.9.3 向RPN中添加赋值运算符 8.10 直接读/写二进制文件 8.11 将数据转换为定长字段(struct) 8.11.1 一次读/写一个数字 8.11.2 一次读/写多个数字 8.11.3 读/写固定长度的字符串 8.11.4 读/写可变长度的字符串 8.11.5 读/写字符串和数字的组合 8.11.6 底层细节——高位优先和低位优先 8.12 使用pickle软件包 8.13 使用shelve软件包 总结 习题 推荐项目 第9章 类和魔术方法 9.1 类和对象的基础语法 9.2 Python中的实例变量 9.3 __init__和__new__方法 9.4 类和前向引用问题 9.5 Python中的方法 9.6 公有和私有变量与方法 9.7 继承 9.8 多重继承 9.9 魔术方法总结 9.10 魔术方法详解 9.10.1 Python类的字符串表示 9.10.2 对象表示方法 9.10.3 比较方法 9.10.4 算术运算符方法 9.10.5 一元算术方法 9.10.6 反向方法 9.10.7 就地运算符 9.10.8 转换方法 9.10.9 集合类方法 9.10.10 实现__iter__和__next__方法 9.11 支持多种参数类型 9.12 动态设置和获取属性 总结 习题 推荐项目 第10章 Decimal、Money和其他类型 10.1 数值类型概述 10.2 浮点类型的局限性 10.3 Decimal类 10.4 Decimal对象的特殊操作 10.5 Decimal类的应用 10.6 设计Money类 10.7 构建基础的Money类(“包含”方式) 10.8 显示Money对象(__str__、__repr__) 10.9 其他有关Money类的操作 10.10 程序Demo:Money计算器 10.11 设置默认货币 10.12 Money类与继承 10.13 Fraction类 10.14 complex类 总结 习题 建议项目 第11章 random包和math包 11.1 random包概述 11.2 随机函数总览 11.3 测试random包的行为 11.4 猜数字游戏 11.5 创建Deck对象 11.6 在牌库中添加图形 11.7 绘制正态分布图 11.8 编写自己的随机数生成器 11.8.1 生成随机数的原理 11.8.2 简单的生成器 11.9 math包概述 11.10 math包函数概览 11.11 使用特殊值(pi) 11.12 三角函数:计算树的高度 11.13 对数:再来一局猜数字 11.13.1 对数如何工作 11.13.2 将对数应用于实际问题 总结 习题 推荐项目 第12章 Python科学计算包——numpy 12.1 array、numpy和matplotlib软件包概述 12.1.1 array软件包 12.1.2 numpy软件包 12.1.3 numpy.random软件包 12.1.4 matplotlib软件包 12.2 使用array软件包 12.3 下载并导入numpy包 12.4 numpy包简介:求1~1 000 000的和 12.5 创建numpy数组 12.5.1 array函数 12.5.2 arange函数 12.5.3 linspace函数 12.5.4 empty函数 12.5.5 eye函数 12.5.6 ones函数 12.5.7 zeros函数 12.5.8 full函数 12.5.9 copy函数 12.5.10 fromfunction函数 12.6 案例:创建一个乘法表 12.7 对numpy数组进行批处理操作 12.8 numpy数组的切片 12.9 多维切片 12.10 布尔数组:用作numpy数组的掩码 12.11 numpy和埃拉托色尼算法 12.12 获取numpy数组的统计信息(标准差) 12.13 从numpy数组中获取行和列 总结 习题 推荐项目 第13章 numpy的高级应用 13.1 基于numpy的高级数学运算 13.2 下载matplotlib包 13.3 使用numpy和matplotlib绘图 13.4 绘制多条线 13.5 绘制复利曲线 13.6 使用matplotlib创建直方图 13.7 圆和长宽比 13.8 绘制饼图 13.9 使用numpy进行线性代数运算 13.9.1 点积 13.9.2 外积函数 13.9.3 其他线性代数函数 13.10 三维绘图 13.11 numpy软件包在金融领域的应用 13.12 使用xticks和yticks函数调整数轴 13.13 numpy混合数据记录 13.14 读取和写入numpy数据文件 总结 习题 推荐项目 第14章 多模块和RPN示例 14.1 Python中的模块概述 14.2 一个简单的双模块的示例 14.3 import语句的多种形式 14.4 使用__all__符号 14.5 公有变量和模块私有变量 14.6 主模块和__main__函数 14.7 陷阱:相互导入问题 14.8 RPN示例:分解为两个模块 14.9 RPN示例:添加更多I/O指令 14.10 RPN示例的进一步修改 14.10.1 添加行号跟踪功能 14.10.2 添加非零跳转功能 14.10.3 大于(>)和获取随机数(!) 14.11 RPN案例总结 总结 习题 推荐项目 第15章 从互联网获取财务数据 15.1 本章计划 15.2 pandas程序包介绍 15.3 stock_load:一个简单的数据读取器 15.4 创建简单的股价图表 15.5 添加标题和图例 15.6 编写makeplot函数(重构) 15.7 绘制两支股票的价格走势图 15.8 绘制其他图形 15.9 限制时间范围 15.10 拆分图表:对交易量进行子图绘制 15.11 添加移动平均线 15.12 让用户选择 总结 习题 推荐项目 附录A Python运算符优先级表 附录B Python中的内置函数 附录C 集合(Set)方法 附录D 字典(Dictionary)方法 附录E 其他语法说明

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个