本书详细地介绍了Python语言的一些高级功能以及常见数据类型的高级用法,非常适合有一定基础的读者深入学习Python编程。本书的主要内容包括常见内置类型(数值、字符串和集合等)的高级用法和潜在的陷阱,用于文本处理的格式化方法和正则表达式,用于数值计算和大规模数据处理的math包和numpy包等。此外,文件存储、随机数生成和图表绘制也是本书的重要内容。本书还开发了一个“RPN脚本解释器”项目,该项目贯穿本书的各个章节,通过对该项目的学习,你也可以开发出自己的“语言”。
Brian Overland是10多本编程书的作者,其中包括Python Without Fear 和C++ for the Impatient。在微软的10年里,他是一名软件测试员、程序员/作家和经理。他是Visual Basic 1.0 文档项目的主要作者和整体负责人。通过制作课程,编写图书、手册和教程,他向数十万人传授编程技术。John Bennett曾任 Proximity Technology、Franklin Electronic Publishing 和 Microsoft Corporation 的高级软件工程师。最近,他使用 Python 作为原型设计工具开发了新的编程语言。他参与过各种软件项目,包括手持拼写检查器和东亚手写识别软件。他拥有9项美国专利。
【作者介绍】Brian Overland出版了多本编程书,其中包括Python Without Fear和《写给大忙人看的C++》(C++ for the Impatient)。在微软的10年里,他是一名软件测试员、程序员、作家和经理。他是Visual Basic 1.0文档项目的主要作者和整体负责人。通过制作课程,编写图书、手册和教程,他向数十万人传授编程技术。John Bennett曾任Proximity Technology、Franklin Electronic Publishing和Microsoft Corporation的高级软件工程师。最近,他使用Python作为原型设计工具开发了新的编程语言。他参与过各种软件项目,包括手持拼写检查器和东亚手写识别软件。他拥有9项美国专利。【译者介绍】李辉,北京科技大学高等工程师学院教师,主要研究方向为机器视觉、机器人应用开发及竞赛研究。获得2018年机器人世界杯中国赛标准组季军,多次获得相关项目国家级和北京市级奖项。致力于学用结合,鼓励学生在项目中锻炼提升。韩慧昌,资深AI产品研发工程师,拥有丰富的AI产品和Python项目开发经验。现微软亚洲互联网工程院算法工程师,微软智汇学院讲师,曾任ThoughtWorks高级咨询师。热衷于AI相关技术的分享,《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 其他语法说明