作者 |
刘宇宙,谢东,刘艳 刘河飞 闫凯峰 |
丛书名 |
出版社 |
机械工业出版社 |
ISBN |
9782104161039 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8079864 - Python进阶编程:编写更高效、优雅的Python代码--------------------------- 内容简介 本书将帮助读者系统掌握编写高效、优雅的Python代码的方法,快速成长为一位高水平的Python开发工程师。 作者是Python编程领域的资深开发工程师,有多年的Python开发经验,本书得到了行业里15位技术专家的高度评价。 为了帮助读者编写出高效的Python代码,本书不仅从源代码的角度系统地讲解了Python的语法,让读者能知其然并知其所以然,而且结合具体的应用需求,对并发编程、性能优化、测试与调试、异常处理、内存管理等Python开发中的高级知识进行了详细的讲解。 为了指导读者编写出更优雅的Python代码,本书针对具体问题给出了大量的实例代码并给出了编码风格上的方法和建议。 如果你是没有Python编程经验的新人,你将通过本书系统掌握Python语法及其背后的原理,并从一开始就养成良好的编码习惯;如果你是有一定Python编程经验的老手,你将通过本书掌握各种Python编程中的高级知识,同时领略到优雅的编码风格和技巧。 ---------------------------8075095 - 趣学Python算法100例--------------------------- 本书从一些经典算法出发,为读者展示了100个Python趣味编程实例。本书共12章,涵盖趣味算法入门、趣味数学问题、各种趣味整数、趣味分数、趣味素数、趣味逻辑推理、趣味游戏、趣味数组、趣味函数递归、定理与猜想、趣味图形及其他趣味问题。本书取材注重趣味性与实用性,内容涵盖Python编程的基础知识和常用算法,讲解时给出了实例的详细分析与代码实现,并对重点代码做了详细注释,还针对涉及的知识点做了拓展讲解。本书实例丰富,讲解通俗易懂,代码可读性及实操性强,适合Python编程的初学者和爱好者阅读,也适合算法设计爱好者阅读。另外,本书还可作为Python教学参考书。 |
目录 |
[套装书具体书目] 8075095 - 趣学Python算法100例 - 9787111665984 - 机械工业出版社 - 定价 99 8079864 - Python进阶编程:编写更高效、优雅的Python代码 - 9787111678502 - 机械工业出版社 - 定价 129 ---------------------------8079864 - Python进阶编程:编写更高效、优雅的Python代码--------------------------- 推荐语 推荐序一 推荐序二 前言 第0章 Python总览 1 0.1 Python总体架构 1 0.2 Python源码组织 2 0.3 Python对象初探 3 0.3.1 Python内的对象 3 0.3.2 对象的分类 4 0.3.3 对象机制的基石—PyObject 5 0.3.4 定长对象和变长对象 5 0.3.5 类型对象 6 0.3.6 类型的类型 7 0.3.7 对象的创建 8 0.3.8 对象的行为 8 0.3.9 对象的多态性 9 0.3.10 引用计数 10 0.4 本章小结 11 第1章 数字对象 12 1.1 整数对象 12 1.1.1 PyLongObject对象 12 1.1.2 小整数对象 14 1.1.3 大整数对象 14 1.2 数字格式化输出 14 1.3 进制转换 16 1.4 数字运算 17 1.4.1 四舍五入运算 17 1.4.2 浮点数运算 19 1.4.3 复数运算 20 1.4.4 分数运算 22 1.4.5 大型数组运算 22 1.4.6 矩阵与线性代数运算 25 1.5 字节到大整数的打包与解包 27 1.6 无穷大与NaN 28 1.7 随机数 30 1.8 本章小结 32 第2章 字符串 33 2.1 字符串对象解析 33 2.1.1 字符串对象的intern机制 33 2.1.2 字符串操作效率 34 2.2 字符串操作 35 2.2.1 字符串分割 35 2.2.2 删除不需要的字符 36 2.2.3 字符串清理 37 2.2.4 字符串对齐 39 2.2.5 字符串拼接 40 2.2.6 字符串插入 42 2.2.7 字符串格式化 43 2.2.8 处理HTML和XML文本 43 2.3 字符串匹配 44 2.3.1 字符串开头或结尾匹配 44 2.3.2 用Shell通配符匹配字符串 46 2.3.3 字符串匹配和搜索 47 2.3.4 最短匹配 49 2.3.5 多行匹配 50 2.4 字符串搜索 50 2.4.1 字符串搜索替换 50 2.4.2 字符串忽略大小写的搜索替换 51 2.5 将Unicode文本标准化 52 2.6 在正则表达式中使用Unicode字符 54 2.7 令牌解析 55 2.8 简单的递归下降分析器实现 57 2.9 字节字符串操作 64 2.10 本章小结 66 第3章 数据结构 67 3.1 序列 67 3.1.1 序列对象解析 67 3.1.2 序列解压 68 3.1.3 序列去重并保持顺序 70 3.1.4 序列元素统计 71 3.1.5 过滤序列元素 72 3.1.6 序列元素名称映射 74 3.1.7 转换并计算数据 76 3.2 字典 77 3.2.1 字典对象解析 77 3.2.2 字典映射 79 3.2.3 字典排序 81 3.2.4 字典运算 81 3.2.5 字典查找 83 3.2.6 通过关键字排序字典 84 3.2.7 字典提取 85 3.2.8 字典合并 86 3.3 可迭代对象操作 88 3.3.1 可迭代对象解压 88 3.3.2 保留最后N个元素 89 3.3.3 记录分组 90 3.4 查找最大或最小的N个元素 91 3.5 实现一个优先级队列 92 3.6 命名切片 95 3.7 排序不支持原生比较的对象 96 3.8 本章小结 97 第4章 迭代器与生成器 98 4.1 迭代操作 98 4.1.1 手动遍历迭代器 98 4.1.2 代理迭代 99 4.1.3 实现迭代协议 100 4.1.4 反向迭代 102 4.1.5 迭代器切片 104 4.1.6 跳过可迭代对象的开始部分 104 4.1.7 排列组合的迭代 106 4.1.8 序列上索引值迭代 107 4.1.9 多个序列迭代 109 4.1.10 集合元素的迭代 111 4.1.11 顺序迭代合并后的排序迭代对象 112 4.1.12 迭代器代替while无限循环 113 4.2 使用生成器创建新的迭代模式 113 4.3 带有外部状态的生成器函数 115 4.4 创建数据处理管道 116 4.5 展开嵌套的序列 118 4.6 本章小结 120 第5章 文件与I/O 121 5.1 读/写操作 121 5.1.1 读/写文本数据 121 5.1.2 读/写字节数据 123 5.1.3 读/写压缩文件 124 5.2 文件操作 126 5.2.1 文件的写入 126 5.2.2 操作文件路径名 126 5.2.3 文件检查 127 5.2.4 文件列表获取 128 5.2.5 忽略文件名编码 129 5.2.6 打印不合法的文件名 130 5.2.7 文件编码变更 132 5.2.8 在文本文件中写入字节 133 5.2.9 文件描述符包装 134 5.2.10 创建临时文件和文件夹 135 5.2.11 文件迭代 137 5.2.12 二进制文件映射 137 5.3 使用分隔符或行终止符打印 139 5.4 字符串的I/O操作 140 5.5 可变缓冲区中二进制数据的读取 141 5.6 串行端口的数据通信 143 5.7 对象序列化 143 5.8 本章小结 146 第6章 数据编码及处理 147 6.1 数据读/写 147 6.1.1 CSV数据读/写 147 6.1.2 JSON数据读/写 151 6.1.3 二进制数组数据读/写 155 6.1.4 嵌套和可变长二进制数据读取 158 6.2 XML数据解析 166 6.2.1 简单XML数据解析 166 6.2.2 解析XML文档 167 6.2.3 修改XML 169 6.3 字典转换为XML 170 6.4 与关系型数据库的交互 172 6.5 编码/解码 174 6.5.1 十六进制数编码和解码 174 6.5.2 编码/解码Base64数据 175 6.6 本章小结 176 第7章 函数 177 7.1 函数定义 177 7.1.1 有默认参数的函数定义 177 7.1.2 匿名或内联函数定义 180 7.2 函数的参数 181 7.2.1 接收任意数量参数 181 7.2.2 接收关键字参数 183 7.2.3 为参数增加元信息 184 7.2.4 减少参数个数 185 7.3 返回多个值的函数 187 7.4 变量处理 188 7.4.1 匿名函数捕获变量值 188 7.4.2 访问闭包中定义的变量 190 7.5 类转换为函数 192 7.6 回调函数 193 7.6.1 有额外状态信息的回调函数 193 7.6.2 内联回调函数 196 7.7 本章小结 198 第8章 类与对象 199 8.1 对象处理 199 8.1.1 对象显示 199 8.1.2 有效创建大量对象 200 8.1.3 由字符串调用对象 201 8.2 自定义格式化字符串 202 8.3 上下文管理协议 203 8.4 类的处理 205 8.4.1 封装属性名 205 8.4.2 调用父类方法 207 8.4.3 扩展property 213 8.4.4 创建新的类或实例属性 217 8.4.5 定义多个构造器 219 8.4.6 类中的比较操作 220 8.5 属性处理 222 8.5.1 可管理属性创建 222 8.5.2 延迟计算属性 226 8.5.3 属性的代理访问 229 8.6 数据结构的初始化 233 8.7 接口或者抽象基类定义 236 8.8 数据模型的类型约束 238 8.9 自定义容器 243 8.10 不调用init方法的实例创建 246 8.11 利用Mixin扩展类功能 247 8.12 状态对象实现 249 8.13 设计模式处理 252 8.13.1 访问者模式 252 8.13.2 不用递归实现访问者模式 255 8.14 数据结构的内存管理 259 8.15 创建缓存 262 8.16 本章小结 266 第9章 元编程 267 9.1 装饰器 267 9.1.1 函数添加装饰器 267 9.1.2 装饰器中保留函数元信息 269 9.1.3 解除装饰器 271 9.1.4 带参数的装饰器 272 9.1.5 装饰器自定义属性 273 9.1.6 带可选参数的装饰器 276 9.1.7 函数的类型检查 278 9.1.8 类中定义装饰器 281 9.1.9 装饰器定义为类 282 9.1.10 类和静态方法的装饰器 285 9.1.11 给函数增加参数 287 9.1.12 扩充类的功能 289 9.2 元类 291 9.2.1 控制实例创建 291 9.2.2 元类定义可选参数 293 9.3 类的属性定义顺序 295 9.4 强制参数签名 297 9.5 强制使用编程规约 300 9.6 以编程方式定义类 303 9.7 初始化类的成员 306 9.8 利用注解实现方法重载 307 9.9 避免重复的属性方法 313 9.10 定义上下文管理器 314 9.11 局部变量域中执行代码 316 9.12 Python源码解析 319 9.13 Python字节码拆解 322 9.14 本章小结 324 第10章 模块与包 325 10.1 模块处理 325 10.1.1 模块层级 325 10.1.2 控制模块的导入 326 10.1.3 重新加载模块 327 10.1.4 通过字符串名导入模块 328 10.1.5 远程加载模块 329 10.1.6 导入模块的同时修改模块 346 10.2 读取包中的数据文件 348 10.3 将文件夹加入sys.path 349 10.4 安装私有的包 350 10.5 创建新的Python环境 350 10.6 分发包 352 10.7 本章小结 353 第11章 网络编程 354 11.1 与HTTP服务交互 354 11.2 创建服务器 357 11.2.1 TCP服务器 357 11.2.2 UDP服务器 360 11.3 通过CIDR地址生成对应的IP地址集 361 11.4 REST接口创建 363 11.5 远程调用 367 11.5.1 远程方法调用 367 11.5.2 通过XML-RPC远程调用 371 11.6 不同Python解释器之间的交互 373 11.7 客户端认证 374 11.8 Socket文件描述符传递 376 11.9 事件驱动的I/O 380 11.10 大型数组发送与接收 385 11.11 本章小结 387 第12章 并发编程 388 12.1 线程处理 388 12.1.1 线程的启动与停止 388 12.1.2 线程判断 391 12.1.3 线程间通信 394 12.1.4 线程加锁 398 12.1.5 防止死锁 401 12.1.6 线程状态信息保存 404 12.1.7 创建线程池 405 12.2 并行编程 408 12.3 全局锁问题 412 12.4 Actor任务定义 414 12.5 消息发布/订阅模型 417 12.6 生成器代替线程 420 12.7 线程队列轮询 427 12.8 守护进程 429 12.9 本章小结 432 第13章 脚本编程与系统管理 433 13.1 脚本接收 433 13.2 终止程序 434 13.3 解析命令行选项 434 13.4 弹出密码输入提示 436 13.5 执行外部命令 437 13.6 文件操作 439 13.6.1 文件和的复制或移动 439 13.6.2 创建和解压归档文件 440 13.6.3 文件查找 441 13.6.4 配置文件读取 442 13.7 添加日志 444 13.7.1 脚本增加日志功能 444 13.7.2 函数库增加日志功能 446 13.8 实现计时器 447 13.9 内存和CPU监测 449 13.10 启动Web浏览器 450 13.11 本章小结 451 第14章 测试、调试和异常 452 14.1 测试 452 14.1.1 stdout输出 452 14.1.2 对象打补丁 453 14.1.3 测试异常 455 14.1.4 记录测试结果 457 14.1.5 性能测试 458 14.1.6 测试失败处理 460 14.2 异常处理 461 14.2.1 捕获所有异常 461 14.2.2 处理多个异常 462 14.2.3 自定义异常 464 14.2.4 抛出新的异常 466 14.2.5 异常重新抛出 468 14.2.6 警告信息 468 14.3 程序调试 470 14.4 加速程序运行 472 14.5 实战—自然语言处理 476 14.6 本章小结 502 第15章 Python的内存管理机制 503 15.1 Python内存架构 503 15.2 小块空间的内存池 505 15.2.1 block 505 15.2.2 pool 506 15.2.3 arena 506 15.2.4 内存池 507 15.3 循环引用的垃圾收集 509 15.3.1 引用计数与垃圾收集 509 15.3.2 三色标记模型 510 15.4 Python垃圾收集 511 15.4.1 可收集对象链表 511 15.4.2 分代垃圾收集 513 15.4.3 Python中的标记—清除方法 514 15.5 实战——内存监控 516 15.6 本章小结 520 第16章 性能优化与实践 521 16.1 优化的规则 521 16.1.1 先使程序可以正常工作 521 16.1.2 从用户的角度进行 522 16.1.3 保证代码易读 522 16.2 优化策略 523 16.2.1 寻找其他原因 523 16.2.2 度量硬件 523 16.2.3 编写速度测试代码 523 16.3 查找瓶颈 524 16.3.1 剖析CPU使用情况 524 16.3.2 剖析内存使用情况 528 16.4 降低复杂度 530 16.4.1 测量回路复杂度 530 16.4.2 测量大O记号 530 16.4.3 简化 531 16.5 实战——爬虫程序的性能优化 532 16.6 本章小结 537 ---------------------------8075095 - 趣学Python算法100例--------------------------- 前言 第1章 趣味算法入门 1 1.1 抓交通肇事犯 1 1.2 兔子产子 4 1.3 牛顿迭代法求方程根 6 1.4 百钱百鸡 9 1.5 借书方案知多少 14 1.6 打鱼还是晒网 17 1.7 最佳存款方案 23 1.8 冒泡排序 24 1.9 折半查找 29 1.10 数制转换 33 第2章 趣味数学问题 39 2.1 三色球 39 2.2 出售金鱼 41 2.3 求车速 43 2.4 个人所得税 46 2.5 存钱 51 2.6 分糖果 54 2.7 爱因斯坦的数学题 57 2.8 猜牌术 59 2.9 舍罕王的失算 62 2.10 马克思手稿中的数学题 64 2.11 换分币 66 第3章 各种趣味整数 69 3.1 回文数 69 3.2 水仙花数 72 3.3 阿姆斯特朗数 74 3.4 完数 76 3.5 亲密数 79 3.6 自守数 82 3.7 高次方数的尾数 85 3.8 黑洞数 87 3.9 勾股数 90 3.10 不重复的3位数 94 第4章 趣味分数 96 4.1 将真分数分解为埃及分数 96 4.2 列出真分数序列 101 4.3 多项式之和 105 4.4 最大公约数 107 4.5 最小公倍数 111 4.6 歌星大奖赛 115 4.7 分数比较 121 4.8 计算分数的精确值 125 第5章 趣味素数 128 5.1 素数 128 5.2 哥德巴赫猜想 134 5.3 要发就发 139 5.4 可逆素数 142 5.5 回文素数 146 5.6 孪生素数 148 5.7 梅森素数 151 第6章 趣味逻辑推理 153 6.1 谁家孩子跑得最慢 153 6.2 新郎和新娘 157 6.3 谁在说谎 159 6.4 谁是窃贼 162 6.5 旅客国籍 165 6.6 委派任务 171 6.7 谜语博士的难题 173 6.7.1 谜语博士的难题(一) 173 6.7.2 谜语博士的难题(二) 176 6.8 黑与白 180 第7章 趣味游戏 183 7.1 黑白子交换 183 7.2 自动发牌 189 7.3 常胜将军 192 7.4 人机猜数 193 7.5 搬山游戏 197 7.6 抢30游戏 200 7.7 24点游戏 204 7.8 掷骰子 210 第8章 趣味数组 214 8.1 平分7筐鱼 214 8.2 农夫过河 216 8.3 矩阵转置 222 8.4 狼追兔子 227 8.5 选美比赛 228 8.6 邮票组合 231 8.7 魔方阵 232 8.8 马踏棋盘 237 8.9 删除“*”符号 243 8.10 在指定位置插入字符 247 第9章 趣味函数递归 249 9.1 猴子吃桃 249 9.2 杨辉三角形 251 9.3 卡布列克常数 255 9.4 递归解决年龄问题 259 9.5 递归解决分鱼问题 263 9.6 汉诺塔问题 267 9.7 逆序输出数字 271 第10章 定理与猜想 277 10.1 尼科彻斯定理 277 10.2 奇数平方的有趣性质 281 10.3 回文数的形成 282 10.4 四方定理 285 10.5 角谷猜想 289 10.6 π的近似值 291 第11章 趣味图形 294 11.1 画直线 294 11.2 画圆和圆弧 302 11.3 画彩色图形 304 11.4 绘制余弦曲线 306 11.5 绘制空心圆 313 11.6 绘制空心菱形 315 11.7 填充彩色图形 318 11.8 绘制饼状图 320 第12章 其他趣味问题 323 12.1 约瑟夫环 323 12.2 数据加密 326 12.3 三色旗 329 12.4 双色球 334 12.5 填表格 336 12.6 求出符合要求的素数 340 12.7 统计学生成绩 346 |