第1章字符串处理
1.1字符串表达式
案例1单行文本
案例2处理字符串中出现的引号
案例3多行文本
1.2代码注释与帮助文档
案例4在代码中写注释
案例5设置代码文件的字符编码
案例6为代码对象撰写帮助文档
1.3input与print函数
案例7接收键盘输入
案例8打印屏幕消息
案例9打印进度条
案例10将文本打印到文件中
案例11打印文本时使用分隔符
案例12使用sys.stdout打印文本
1.4格式化字符串
案例13输出十六进制字符串
案例14设置字符串的对齐方式
案例15数字的千位分隔符
案例16“_”分隔符
案例17自定义日期格式
案例18使用format方法
案例19省略格式占位符的名称和序号
案例20字符串模板
案例21字符串模板的安全替换模式
案例22文本缩进
案例23嵌套使用格式化语法
1.5str类的常用方法
案例24转换字母的大小写
案例25用“0”填充字符串
案例26对齐方式
案例27查找子字符串
案例28startswith与endswith方法
案例29统计子字符串出现的次数
案例30文本的标题样式
案例31串联字符串
案例32拆分字符串
案例33替换字符串
案例34去掉字符串首尾的空格
案例35lstrip与rstrip方法
案例36去除字符串首尾的特定字符
1.6字符串编码
案例37编码与解码
案例38ord与chr函数
第2章模块与包
2.1模块
案例39独立运行模块
案例40导入模块
案例41使用from…import语句导入模块
案例42__all__变量的作用
案例43以编程方式生成__all__变量
案例44为模块编写帮助文档
案例45特殊的模块名称——__main__
案例46__file__与__cached__属性
2.2包
案例47让普通目录变成包
案例48__init__.py文件
案例49合并子模块的成员列表
案例50合并多个__init__.py文件中的__all__属性
案例51__main__.py文件的用途
案例52基于名称空间的包
案例53__package__属性
案例54自定义包或模块的搜索路径
案例55从.zip文件中导入包
2.3以编程方式导入模块
案例56检查是否能够导入某个模块
案例57使用import_module函数导入模块
案例58重新载入模块
第3章变量与名称空间
3.1变量与赋值
案例59声明变量
案例60类型批注
案例61声明语句也是变量赋值
案例62as关键字与赋值
案例63组合赋值法
案例64组合赋值与表达式列表
3.2名称空间
案例65获取全局名称空间的字典
案例66获取局部名称空间的字典
案例67直接更新名称空间字典
案例68使用global关键字声明变量
案例69使用nonlocal关键字声明变量
第4章代码流程控制
4.1顺序执行
案例70最简单的流程
案例71声明阶段与调用阶段
4.2分支语句
案例72单路分支
案例73双路分支
案例74更复杂的分支语句
案例75分支语句的嵌套使用
4.3循环
案例76输出从1到10各个整数的平方根
案例77使用for循环
案例78for循环与range函数
案例79组成每个数位均不相同的三位数
案例80求“水仙花数”
案例81跳出循环
4.4异常处理
案例82引发异常
案例83捕捉异常
案例84异常处理中的“清理”代码
案例85else子句的作用
案例86省略except子句
案例87自定义异常类
第5章数学运算
5.1运算符
5.1.1算术运算符
案例88四则计算器
案例89指数运算符
案例90分解整数位
案例91连接字符串
案例92当字符串遇上乘法运算符
案例93运算优先级
5.1.2比较运算符
案例94自定义的相等比较
案例95比较对象的大小
案例96自定义的大小比较
5.1.3位运算符
案例97二进制位的逻辑运算
案例98移动二进制位
5.1.4逻辑运算符
案例99查找同时包含a、e两个字母的单词
案例100or运算符
案例101自定义布尔运算
5.1.5其他运算符
案例102对象标识的比较运算
案例103not运算符
案例104检查类型成员的存在性
案例105复合赋值运算符
案例106模拟C语言的“三目”运算符
5.2浮点数的扩展功能
案例107Decimal类的简单使用
案例108通过元组对象来初始化Decimal类
案例109使用DecimalTuple来初始化Decimal对象
案例110设置浮点数的精度
案例111基于线程的浮点数环境
5.3随机数
案例112产生一个随机整数
案例113从序列中随机取出一个元素
案例114生成0~1的随机数
案例115从原序列中选取随机样本组成新序列
案例116打乱列表中的元素顺序
5.4数学函数
案例117取整函数
案例118“四舍六入五留双”算法
案例119求绝对值
案例120最大值与最小值
案例121排序函数——sorted
案例122按照字符串的长度排序
案例123依据员工的年龄排序
案例124以自然常数为底的指数运算
案例125求以10为底数的对数
案例126获取浮点数的分数与整数部分
案例127计算最大公约数
案例128阶乘运算
5.5三角函数
案例129弧度制与角度制之间的转换
案例130常用的三角函数
案例131反三角函数
案例132欧氏距离
案例133闵氏距离公式
5.6统计学函数
案例134求和函数
案例135算术平均数
案例136求字符串样本的平均长度
案例137调和平均数
案例138中位数
案例139从分组数据中求中位数
案例140众数
案例141方差
案例142标准差
5.7分式
案例143如何案例化Fraction类
案例144限制分母的大小
案例145常见的分式运算
5.8日期与时间
案例146日期之间的比较
案例147计算时间差
案例148timedelta类的乘法运算
第6章函数式编程
6.1函数的定义与调用
案例149定义函数
案例150函数的调用方法
案例151函数的定义顺序
案例152如何更改函数的引用名称
6.2向函数传递参数的方式
案例153按位置传递参数与按关键字传递参数
案例154只能按关键字传递的参数
案例155只能按位置传递的参数
6.3可变参数
案例156可变的位置参数
案例157可变的关键字参数
案例158可变参数的混合使用
案例159可变参数与非可变参数的混合使用
6.4装饰器
案例160将函数对象作为参数传递
案例161嵌套的函数定义
案例162实现简单的装饰器
案例163限制调用函数的Python版本
案例164实现只能使用三次的装饰器
6.5lambda表达式
案例165打印满足条件的数字
案例166按数字的绝对值大小排序
第7章属性系统
7.1动态读写属性
案例167简单的属性访问
案例168删除属性
案例169__dict__成员
案例170区分类型属性与案例属性
7.2与属性访问有关的函数
案例171获取与设置属性
案例172检查属性是否存在
案例173delattr()函数
案例174vars()函数
7.3__slots__成员
案例175禁止创建__dict__成员
案例176派生类需要重新定义__slots__成员
案例177让对象案例的属性变成只读属性
案例178以编程方式生成__slots__成员
案例179类变量与__slots__之间的冲突
7.4自定义的属性访问
案例180属性协议
案例181禁止访问模块中的特定成员
7.5描述符
案例182描述符的协议方法
案例183作用于类级别的描述符
案例184防止描述符被替换
案例185实现基于特定类型的描述符
案例186如何让案例属性存储独立的值
案例187使用property类来封装属性值
案例188将property类作为装饰器使用
案例189在模块中使用描述符
第8章类与对象
8.1类的定义与案例化
案例190class关键字
案例191类型的案例化
案例192__new__方法与__init__方法
案例193带参数的构造函数
案例194实现__del__方法
8.2方法成员
案例195案例方法
案例196类方法
案例197静态方法
8.3元类
案例198使用type类创建新类型
案例199元类的实现过程
案例200向元类传递参数
案例201元类与继承
案例202__prepare__方法
8.4继承与多态
案例203类型派生
案例204类型继承中的多态
案例205覆盖基类的成员
案例206访问基类的成员
案例207使用super类来访问基类的成员
案例208调用基类的类方法
案例209super类的非绑定用法
案例210方法解析顺序(MRO)
案例211“鸭子”类型
案例212issubclass()函数与派生类检查
案例213自定义派生类的检查逻辑
案例214初始化派生类型
案例215抽象类
案例216虚拟子类
案例217获取类的直接子类
8.5对象复制
案例218id()函数
案例219浅拷贝与深拷贝
8.6特殊成员
案例220__str__方法与__repr__方法
案例221模拟函数调用
案例222自定义对象目录
案例223获取对象案例所占用的内存大小
8.7上下文管理
案例224with语句
案例225让自定义的类型支持上下文管理
案例226contextmanager装饰器
案例227使用closing类来释放上下文资源
第9章数据结构
9.1列表
案例228初始化列表对象
案例229添加元素
案例230删除元素
案例231自定义排序
案例232反转列表
案例233统计某个元素的出现次数
案例234将列表对象作为栈结构使用
案例235合并列表
案例236重复列表中的元素
9.2元组
案例237元组的初始化方法
案例238带命名字段的元组
案例239将带命名字段的元组转换为字典
9.3字典
案例240字典的案例化方法
案例241字典与for循环
案例242从其他数据来源更新字典
案例243可以调整元素次序的字典
案例244合并字典
案例245计数器
9.4集合
案例246创建集合案例
案例247合并集合
案例248集合的包含关系
案例249交集与差集
9.5数组
案例250案例化数组
案例251修改数组中的元素
案例252将数组内容存入文件
9.6枚举
案例253定义枚举类
案例254只能使用int值的枚举
案例255带标志位的枚举
案例256禁止使用重复的成员值
9.7迭代器
案例257iter函数与next函数
案例258yield语句与迭代生成器
案例259自定义的迭代器
9.8自定义序列
案例260实现按索引访问的集合
案例261统计集合的长度
案例262字典对象的访问协议
9.9其他
案例263切片
案例264in与not in运算符
第10章异步编程
10.1多线程
案例265创建并启动新线程
案例266使用线程锁
案例267等待事件信号
案例268屏障
10.2异步等待
案例269定义异步函数
案例270执行异步函数
案例271案例化Task对象
第11章网络编程
11.1Socket编程
案例272TCP通信协议
案例273UDP通信协议
案例274TCPServer与UDPServer
11.2HTTP与CGI编程
案例275使用HTTP协议下载文件
案例276简单的HTTP服务器
案例277编写CGI脚本
案例278设置CGI脚本的查找目录
第12章文件与I/O
12.1目录操作
案例279创建与删除目录
案例280创建与删除嵌套目录
12.2文件与I/O操作
案例281读写文本文件
案例282读写二进制文件
案例283内存流
12.3数据文件
案例284读写CSV文件
案例285读写JSON文件
案例286生成zip文件
第13章应用程序界面开发——Tk
13.1Tk应用程序的初始化
案例287使用Tk类
案例288Frame容器
13.2布局
案例289填充与停靠
案例290网格布局
案例291通过坐标来布局控件
13.3常用控件
案例292前景颜色与背景颜色
案例293设置控件字体
案例294可重复执行命令的按钮
案例295让按钮控件的command参数调用多个函数
案例296密码输入框
案例297单选按钮
案例298复选按钮
案例299列表控件
案例300使用ttk控件库