本书配套提供所有案例的源代码,便于读者动手实践甚至进行二次开发。本书适合作为广大高校计算机专业或相关培训机构的Python课程教材,也可以作为Python技术开发者的自学参考用书。
03图书目录第1章字符串处理
1.1字符串表达式
案例1单行文本
案例处理字符串中出现的引号
案例3多行文本
1.代码注释与帮助文档
案例4在代码中写注释
案例5设置代码文件的字符编码
案例6为代码对象撰写帮助文档
1.3input与print函数
案例7接收键盘输入
案例8打印屏幕消息
案例9打印进度条
案例10将文本打印到文件中
案例11打印文本时使用分隔符
案例1使用sys.stdout打印文本
1.4格式化字符串
案例13输出十六进制字符串
案例14设置字符串的对齐方式
案例15数字的千位分隔符
案例16“_”分隔符
案例17自定义日期格式
案例18使用format方法
案例19省略格式占位符的名称和序号
案例0字符串模板
案例1字符串模板的安全替换模式
案例文本缩进
案例3嵌套使用格式化语法
1.5str类的常用方法
案例4转换字母的大小写
案例5用“0”填充字符串
案例6对齐方式
案例7查找子字符串
案例8startswith与endswith方法
案例9统计子字符串出现的次数
案例30文本的标题样式
案例31串联字符串
案例3拆分字符串
案例33替换字符串
案例34去掉字符串首尾的空格
案例35lstrip与rstrip方法
案例36去除字符串首尾的特定字符
1.6字符串编码
案例37编码与解码
案例38ord与chr函数
第章模块与包
.1模块
案例39独立运行模块
案例40导入模块
案例41使用from…import语句导入模块
案例4__all__变量的作用
案例43以编程方式生成__all__变量
案例44为模块编写帮助文档
案例45特殊的模块名称——__main__
案例46__file__与__cached__属性
.包
案例47让普通目录变成包
案例48__init__.py文件
案例49合并子模块的成员列表
案例50合并多个__init__.py文件中的__all__属性
案例51__main__.py文件的用途
案例5基于名称空间的包
案例53__package__属性
案例54自定义包或模块的搜索路径
案例55从.zip文件中导入包
.3以编程方式导入模块
案例56检查是否能够导入某个模块
案例57使用import_module函数导入模块
案例58重新载入模块
第3章变量与名称空间
3.1变量与赋值
案例59声明变量
案例60类型批注
案例61声明语句也是变量赋值
案例6as关键字与赋值
案例63组合赋值法
案例64组合赋值与表达式列表
3.名称空间
案例65获取全局名称空间的字典
案例66获取局部名称空间的字典
案例67直接更新名称空间字典
案例68使用global关键字声明变量
案例69使用nonlocal关键字声明变量
第4章代码流程控制
4.1顺序执行
案例70最简单的流程
案例71声明阶段与调用阶段
4.分支语句
案例7单路分支
案例73双路分支
案例74更复杂的分支语句
案例75分支语句的嵌套使用
4.3循环
案例76输出从1到10各个整数的平方根
案例77使用for循环
案例78for循环与range函数
案例79组成每个数位均不相同的三位数
案例80求“水仙花数”
案例81跳出循环
4.4异常处理
案例8引发异常
案例83捕捉异常
案例84异常处理中的“清理”代码
案例85else子句的作用
案例86省略except子句
案例87自定义异常类
第5章数学运算
5.1运算符
5.1.1算术运算符
案例88四则计算器
案例89指数运算符
案例90分解整数位
案例91连接字符串
案例9当字符串遇上乘法运算符
案例93运算优先级
5.1.比较运算符
案例94自定义的相等比较
案例95比较对象的大小
案例96自定义的大小比较
5.1.3位运算符
案例97二进制位的逻辑运算
案例98移动二进制位
5.1.4逻辑运算符
案例99查找同时包含a、e两个字母的单词
案例or运算符
案例自定义布尔运算
5.1.5其他运算符
案例10对象标识的比较运算
案例not运算符
案例检查类型成员的存在性
案例复合赋值运算符
案例模拟C语言的“三目”运算符
5.浮点数的扩展功能
案例Decimal类的简单使用
案例通过元组对象来初始化Decimal类
案例使用DecimalTuple来初始化Decimal对象
案例设置浮点数的精度
案例基于线程的浮点数环境
5.3随机数
案例11产生一个随机整数
案例从序列中随机取出一个元素
案例生成0~1的随机数
案例从原序列中选取随机样本组成新序列
案例打乱列表中的元素顺序
5.4数学函数
案例取整函数
案例“四舍六入五留双”算法
案例求绝对值
案例10最大值与最小值
案例11排序函数——sorted
案例1按照字符串的长度排序
案例13依据员工的年龄排序
案例14以自然常数为底的指数运算
案例15求以10为底数的对数
案例16获取浮点数的分数与整数部分
案例17计算最大公约数
案例18阶乘运算
5.5三角函数
案例19弧度制与角度制之间的转换
案例常用的三角函数
案例反三角函数
案例13欧氏距离
案例闵氏距离公式
5.6统计学函数
案例求和函数
案例算术平均数
案例求字符串样本的平均长度
案例调和平均数
案例中位数
案例从分组数据中求中位数
案例众数
案例方差
案例14标准差
5.7分式
案例如何案例化Fraction类
案例限制分母的大小
案例常见的分式运算
5.8日期与时间
案例日期之间的比较
案例计算时间差
案例timedelta类的乘法运算
第6章函数式编程
6.1函数的定义与调用
案例定义函数
案例函数的调用方法
案例函数的定义顺序
案例15如何更改函数的引用名称
6.向函数传递参数的方式
案例按位置传递参数与按关键字传递参数
案例只能按关键字传递的参数
案例只能按位置传递的参数
6.3可变参数
案例可变的位置参数
案例可变的关键字参数
案例可变参数的混合使用
案例可变参数与非可变参数的混合使用
6.4装饰器
案例将函数对象作为参数传递
案例嵌套的函数定义
案例16实现简单的装饰器
案例限制调用函数的Python版本
案例实现只能使用三次的装饰器
6.5lambda表达式
案例打印满足条件的数字
案例按数字的绝对值大小排序
第7章属性系统
7.1动态读写属性
案例简单的属性访问
案例删除属性
案例__dict__成员
案例区分类型属性与案例属性
7.与属性访问有关的函数
案例获取与设置属性
案例17检查属性是否存在
案例delattr()函数
案例vars()函数
7.3__slots__成员
案例禁止创建__dict__成员
案例派生类需要重新定义__slots__成员
案例让对象案例的属性变成只读属性
案例以编程方式生成__slots__成员
案例类变量与__slots__之间的冲突
7.4自定义的属性访问
案例属性协议
案例禁止访问模块中的特定成员
7.5描述符
案例18描述符的协议方法
案例作用于类级别的描述符
案例防止描述符被替换
案例实现基于特定类型的描述符
案例如何让案例属性存储独立的值
案例使用property类来封装属性值
案例将property类作为装饰器使用
案例在模块中使用描述符
第8章类与对象
8.1类的定义与案例化
案例class关键字
案例类型的案例化
案例19__new__方法与__init__方法
案例带参数的构造函数
案例实现__del__方法
8.方法成员
案例案例方法
案例类方法
案例静态方法
8.3元类
案例使用type类创建新类型
案例元类的实现过程
案例00向元类传递参数
案例01元类与继承
案例0__prepare__方法
8.4继承与多态
案例03类型派生
案例04类型继承中的多态
案例05覆盖基类的成员
案例06访问基类的成员
案例07使用super类来访问基类的成员
案例08调用基类的类方法
案例09super类的非绑定用法
案例10方法解析顺序(MRO)
案例11“鸭子”类型
案例1issubclass()函数与派生类检查
案例13自定义派生类的检查逻辑
案例14初始化派生类型
案例15抽象类
案例16虚拟子类
案例17获取类的直接子类
8.5对象复制
案例18id()函数
案例19浅拷贝与深拷贝
8.6特殊成员
案例0__str__方法与__repr__方法
案例1模拟函数调用
案例自定义对象目录
案例3获取对象案例所占用的内存大小
8.7上下文管理
案例4with语句
案例5让自定义的类型支持上下文管理
案例6contextmanager装饰器
案例7使用closing类来释放上下文资源
第9章数据结构
9.1列表
案例8初始化列表对象
案例9添加元素
案例30删除元素
案例31自定义排序
案例3反转列表
案例33统计某个元素的出现次数
案例34将列表对象作为栈结构使用
案例35合并列表
案例36重复列表中的元素
9.元组
案例37元组的初始化方法
案例38带命名字段的元组
案例39将带命名字段的元组转换为字典
9.3字典
案例40字典的案例化方法
案例41字典与for循环
案例4从其他数据来源更新字典
案例43可以调整元素次序的字典
案例44合并字典
案例45计数器
9.4集合
案例46创建集合案例
案例47合并集合
案例48集合的包含关系
案例49交集与差集
9.5数组
案例50案例化数组
案例51修改数组中的元素
案例5将数组内容存入文件
9.6枚举
案例53定义枚举类
案例54只能使用int值的枚举
案例55带标志位的枚举
案例56禁止使用重复的成员值
9.7迭代器
案例57iter函数与next函数
案例58yield语句与迭代生成器
案例59自定义的迭代器
9.8自定义序列
案例60实现按索引访问的集合
案例61统计集合的长度
案例6字典对象的访问协议
9.9其他
案例63切片
案例64in与notin运算符
第10章异步编程
10.1多线程
案例65创建并启动新线程
案例66使用线程锁
案例67等待事件信号
案例68屏障
10.异步等待
案例69定义异步函数
案例70执行异步函数
案例71案例化Task对象
第11章网络编程
11.1Socket编程
案例7TCP通信协议
案例73UDP通信协议
案例74TCPServer与UDPServer
11.HTTP与CGI编程
案例75使用HTTP协议下载文件
案例76简单的HTTP服务器
案例77编写CGI脚本
案例78设置CGI脚本的查找目录
第1章文件与I/O
1.1目录操作
案例79创建与删除目录
案例80创建与删除嵌套目录
1.文件与I/O操作
案例81读写文本文件
案例8读写二进制文件
案例83内存流
1.3数据文件
案例84读写CSV文件
案例85读写JSON文件
案例86生成zip文件
第13章应用程序界面开发——Tk
13.1Tk应用程序的初始化
案例87使用Tk类
案例88Frame容器
13.布局
案例89填充与停靠
案例90网格布局
案例91通过坐标来布局控件
13.3常用控件
案例9前景颜色与背景颜色
案例93设置控件字体
案例94可重复执行命令的按钮
案例95让按钮控件的