Python高级编程(第2版): Chinese Edition
()
Posts & Telecom Press
人民邮电出版社,1953年10月成立,隶属于中国工信出版传媒集团,是工业和信息化部主管的大型专业出版社。建社以来,人民邮电出版社始终坚持正确的出版导向,坚持为科技发展与社会进步服务、为繁荣社会主义文化服务,坚持积极进取、改革创新,围绕“立足工信事业,面向现代社会,传播科学知识,引领美好生活”的出版宗旨,已发展成为集图书、期刊、音像电子及数字出版于一体的综合性出版大社。 人民邮电出版社是全国优秀出版社、全国百佳图书出版单位,第一届、第二届、第三届、第五届“中国出版政府奖先进出版单位”,拥有“全国文明单位”、中央国家机关“五一劳动奖状”、中央国家机关“文明单位标兵”和“首都文明单位标兵”等重要荣誉,切实将社会效益放在首位、实现社会效益与经济效益相统一,综合实力位居行业前列。 人民邮电出版社出版领域涵盖科技出版、教育出版、大众出版,涉及信息技术、通信、工业技术、科普、经济管理、摄影、艺术、运动与休闲、心理学、少儿、大中专教材等10余个出版门类,年出版图书近万种,年销售码洋逾30亿元,在全国图书零售市场的占有率名列前茅,其中计算机类、艺术类、摄影类、运动与休闲类排名第一,设计类排名第二,科普类、美术类排名第四,经管类、少儿类位居前列。
Read more from Posts & Telecom Press
面向MapReduce的Hadoop优化: Chinese Edition Rating: 0 out of 5 stars0 ratings深度学习实战手册(R语言版): Chinese Edition Rating: 0 out of 5 stars0 ratings数据科学实战手册: Chinese Edition Rating: 0 out of 5 stars0 ratings编写整洁的Python代码(第2版): Chinese Edition Rating: 0 out of 5 stars0 ratings深度学习:核心原理与案例分析: Chinese Edition Rating: 0 out of 5 stars0 ratings程序员学数据结构: Chinese Edition Rating: 0 out of 5 stars0 ratingsSpark Cookbook (中文版): Chinese Edition Rating: 0 out of 5 stars0 ratings移动端机器学习实战: Chinese Edition Rating: 0 out of 5 stars0 ratingsTensorFlow构建机器学习项目: Chinese Edition Rating: 0 out of 5 stars0 ratingsPyTorch深度学习: Chinese Edition Rating: 0 out of 5 stars0 ratingsPython算法交易实战: Chinese Edition Rating: 0 out of 5 stars0 ratingsHadoop实际解决方案手册: Chinese Edition Rating: 0 out of 5 stars0 ratingsNLTK应用开发指南: Chinese Edition Rating: 0 out of 5 stars0 ratingsR深度学习权威指南: Chinese Edition Rating: 0 out of 5 stars0 ratings自然语言处理与计算语言学: Chinese Edition Rating: 0 out of 5 stars0 ratings金融中的机器学习: Chinese Edition Rating: 0 out of 5 stars0 ratingsPython编程入门与实战: Chinese Edition Rating: 0 out of 5 stars0 ratingsscikit-learn机器学习(第2版): Chinese Edition Rating: 0 out of 5 stars0 ratingsD3.js数据可视化实战手册: Chinese Edition Rating: 0 out of 5 stars0 ratingsPython迁移学习: Chinese Edition Rating: 0 out of 5 stars0 ratings用Python写网络爬虫(第2版): Chinese Edition Rating: 0 out of 5 stars0 ratings数据科学实战手册(R+Python)(第2版): Chinese Edition Rating: 0 out of 5 stars0 ratingsPython贝叶斯分析(第2版): Chinese Edition Rating: 0 out of 5 stars0 ratingsR概率图模型入门与实践: Chinese Edition Rating: 0 out of 5 stars0 ratings机器学习开发者指南: Chinese Edition Rating: 0 out of 5 stars0 ratingsR编程学习指南: Chinese Edition Rating: 0 out of 5 stars0 ratingsPython图像处理实战: Chinese Edition Rating: 0 out of 5 stars0 ratings精通Python自然语言处理: Chinese Edition Rating: 0 out of 5 stars0 ratings人工智能技术与大数据: Chinese Edition Rating: 0 out of 5 stars0 ratingsPython面向对象编程指南: Chinese Edition Rating: 0 out of 5 stars0 ratings
Related to Python高级编程(第2版)
Related ebooks
Python编程入门与实战: Chinese Edition Rating: 0 out of 5 stars0 ratings写给系统管理员的Python脚本编程指南: Chinese Edition Rating: 0 out of 5 stars0 ratingsMastering Python Advanced Concepts and Practical Applications Rating: 0 out of 5 stars0 ratingsPython In - Depth: Use Python Programming Features, Techniques, and Modules to Solve Everyday Problems Rating: 0 out of 5 stars0 ratingsPython Essentials Rating: 5 out of 5 stars5/5Python 3 Fundamentals: A Complete Guide for Modern Programmers Rating: 0 out of 5 stars0 ratingsMastering Python: A Journey Through Programming and Beyond Rating: 0 out of 5 stars0 ratingsPython面向对象编程指南: Chinese Edition Rating: 0 out of 5 stars0 ratingsMastering Python Programming: From Basics to Expert Proficiency Rating: 0 out of 5 stars0 ratingsPython Programming for Newbies Rating: 0 out of 5 stars0 ratingsMastering Python in 7 Days Rating: 0 out of 5 stars0 ratingsLearn Python in 10 Minutes Rating: 4 out of 5 stars4/5Mastering Python: A Comprehensive Approach for Beginners and Beyond Rating: 0 out of 5 stars0 ratingsPython应用开发指南: Chinese Edition Rating: 0 out of 5 stars0 ratingsMastering Python: Learn Python Step-by-Step with Practical Projects Rating: 0 out of 5 stars0 ratingsCoder's Hand Book - Python: Coder's Hand Book - Python: Coder's Hand Book - Python Rating: 0 out of 5 stars0 ratingsPython Mini Manual Rating: 0 out of 5 stars0 ratingsExpert Python Programming - Second Edition Rating: 2 out of 5 stars2/5Python For Kids For Dummies Rating: 0 out of 5 stars0 ratingsPython for Everyone: A Complete Guide to Coding, Data, and Web Development: Your Guide to the Digital World, #3 Rating: 0 out of 5 stars0 ratingsMastering Python Basics: Python, #1 Rating: 0 out of 5 stars0 ratingsPython: Learn Python in 24 Hours Rating: 4 out of 5 stars4/5Python for Developers: Learn to Develop Efficient Programs using Python Rating: 0 out of 5 stars0 ratingsThe Python Codebook: Building Essential Skills Rating: 0 out of 5 stars0 ratingsBeginning Programming with Python For Dummies Rating: 3 out of 5 stars3/5Mastering Objectoriented Python Rating: 5 out of 5 stars5/5The 1 Page Python Book Rating: 2 out of 5 stars2/5
Programming For You
Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5PYTHON PROGRAMMING Rating: 4 out of 5 stars4/5Python: Learn Python in 24 Hours Rating: 4 out of 5 stars4/5JavaScript All-in-One For Dummies Rating: 5 out of 5 stars5/5Microsoft Azure For Dummies Rating: 0 out of 5 stars0 ratingsBeginning Programming with Python For Dummies Rating: 3 out of 5 stars3/5Linux Basics for Hackers: Getting Started with Networking, Scripting, and Security in Kali Rating: 4 out of 5 stars4/5Beginning Programming with C++ For Dummies Rating: 4 out of 5 stars4/5SQL All-in-One For Dummies Rating: 3 out of 5 stars3/5The Complete C++ Programming Guide Rating: 0 out of 5 stars0 ratingsHow Computers Really Work: A Hands-On Guide to the Inner Workings of the Machine Rating: 0 out of 5 stars0 ratingsGodot from Zero to Proficiency (Foundations): Godot from Zero to Proficiency, #1 Rating: 5 out of 5 stars5/5Learn NodeJS in 1 Day: Complete Node JS Guide with Examples Rating: 3 out of 5 stars3/5Windows 11 For Dummies Rating: 0 out of 5 stars0 ratingsC All-in-One Desk Reference For Dummies Rating: 5 out of 5 stars5/5Hacking Electronics: Learning Electronics with Arduino and Raspberry Pi, Second Edition Rating: 0 out of 5 stars0 ratingsPLC Controls with Structured Text (ST): IEC 61131-3 and best practice ST programming Rating: 4 out of 5 stars4/5Algorithms For Dummies Rating: 4 out of 5 stars4/5Arduino Essentials Rating: 5 out of 5 stars5/5Raspberry Pi Zero Cookbook Rating: 0 out of 5 stars0 ratings
Reviews for Python高级编程(第2版)
0 ratings0 reviews
Book preview
Python高级编程(第2版) - Posts & Telecom Press
版 权 信 息
书 名: P y t h o n 高 级 编 程 ( 第 2 版)
I S B N: 9 7 8 - 7 - 1 1 5 - 4 6 0 1 5 - 8
本 书 由 人 民 邮 电 出 版 社 发 行 数 字 版。 版 权 所 有, 侵 权 必 究。
您 购 买 的 人 民 邮 电 出 版 社 电 子 书 仅 供 您 个 人 使 用, 未 经 授 权, 不 得 以 任 何 方 式 复 制 和 传 播 本 书 内 容。
我 们 愿 意 相 信 读 者 具 有 这 样 的 良 知 和 觉 悟, 与 我 们 共 同 保 护 知 识 产 权。
如 果 购 买 者 有 侵 权 行 为, 我 们 可 能 对 该 用 户 实 施 包 括 但 不 限 于 关 闭 该 帐 号 等 维 权 措 施, 并 可 能 追 究 法 律 责 任。
• 著 [ 波 兰] M i c h a ł J a w o r s k i [ 法] T a r e k Z i a d é
译 张 亮 阿 信
责 任 编 辑 胡 俊 英
• 人 民 邮 电 出 版 社 出 版 发 行 北 京 市 丰 台 区 成 寿 寺 路 1 1 号
邮 编 1 0 0 1 6 4 电 子 邮 件 3 1 5 @ p t p r e s s. c o m. c n
网 址 h t t p: / / w w w. p t p r e s s. c o m. c n
• 读 者 服 务 热 线: ( 0 1 0) 8 1 0 5 5 4 1 0
反 盗 版 热 线: ( 0 1 0) 8 1 0 5 5 3 1 5
内 容 提 要
P y t h o n 作 为 一 种 高 级 程 序 设 计 语 言, 凭 借 其 简 洁、 易 读 及 可 扩 展 性 日 渐 成 为 程 序 设 计 领 域 备 受 推 崇 的 语 言 之 一。
本 书 基 于 P y t h o n 3. 5 版 本 进 行 讲 解, 通 过 1 3 章 的 内 容, 深 度 揭 示 了 P y t h o n 编 程 的 高 级 技 巧。 本 书 从 P y t h o n 语 言 及 其 社 区 的 现 状 开 始 介 绍, 对 P y t h o n 语 法、 命 名 规 则、 P y t h o n 包 的 编 写、 部 署 代 码、 扩 展 程 序 开 发、 管 理 代 码、 文 档 编 写、 测 试 开 发、 代 码 优 化、 并 发 编 程、 设 计 模 式 等 重 要 话 题 进 行 了 全 面 系 统 化 的 讲 解。
本 书 适 合 想 要 进 一 步 提 高 自 身 P y t h o n 编 程 技 能 的 读 者 阅 读, 也 适 合 对 P y t h o n 编 程 感 兴 趣 的 读 者 参 考 学 习。 全 书 结 合 典 型 且 实 用 的 开 发 案 例, 可 以 帮 助 读 者 创 建 高 性 能 的、 可 靠 且 可 维 护 的 P y t h o n 应 用。
译 者 简 介
张 亮 ( h y s i c), 毕 业 于 北 京 大 学 物 理 学 院, 是 一 名 爱 好 机 器 学 习 和 数 据 分 析 的 核 安 全 工 程 师, 主 要 负 责 本 书 前 6 章 的 翻 译, 并 对 本 书 进 行 了 技 术 审 读。
阿 信, 软 件 工 程 师, 业 余 时 间 喜 欢 读 书, 也 喜 欢 翻 译。
作 者 简 介
M i c h a ł J a w o r s k i有 着 7 年 P y t h o n 编 程 的 经 验。 他 还 是 g r a c e f u l 的 创 建 者, 这 是 一 个 构 建 于 f a l c o n 之 上 的 R E S T 框 架。 他 曾 在 不 同 的 公 司 担 任 过 多 种 角 色, 从 一 名 普 通 的 全 栈 开 发 人 员 到 软 件 架 构 师 再 到 一 家 快 节 奏 创 业 公 司 的 工 程 副 总 裁。 他 目 前 是 O p e r a 软 件 公 司 T V S t o r e ( 电 视 应 用 商 店) 团 队 的 首 席 后 端 工 程 师。 他 在 设 计 高 性 能 的 分 布 式 服 务 方 面 拥 有 丰 富 的 经 验。 他 还 是 一 些 流 行 的 P y t h o n 开 源 项 目 的 活 跃 贡 献 者。
T a r e k Z i a d e ́是 M o z i l l a 的 工 程 经 理, 与 一 个 专 门 用 P y t h o n 为 F i r e f o x 构 建 大 规 模 W e b 应 用 的 团 队 合 作。 他 对 P y t h o n 打 包 做 出 过 贡 献, 而 且 从 早 期 Z o p e 开 始 就 使 用 过 各 种 不 同 的 P y t h o n W e b 框 架。
T a r e k 还 创 建 了 A f p y—— 法 国 的 P y t h o n 用 户 组, 并 且 用 法 语 写 过 两 本 关 于 P y t h o n 的 书。 他 还 在 诸 如 S o l u t i o n s L i n u x、 P y C o n、 O S C O N 和 E u r o P y t h o n 等 国 际 活 动 中 做 过 多 次 法 语 演 讲 和 教 学。
审 稿 人 简 介
F a c u n d o B a t i s t a是 P y t h o n 编 程 语 言 方 面 的 专 家, 拥 有 超 过 1 5 年 的 P y t h o n 编 程 经 验。 他 是 这 门 语 言 的 核 心 开 发 者, 也 是 P y t h o n 软 件 基 金 会 的 成 员。 他 还 获 得 了 2 0 0 9 年 的 社 区 服 务 奖, 奖 励 他 组 织 了 阿 根 廷 的 P y C o n 及 其 P y t h o n 社 区, 以 及 对 标 准 库 的 贡 献 和 在 翻 译 P y t h o n 文 档 方 面 所 做 的 工 作。
他 还 在 阿 根 廷 与 其 他 国 家 ( 美 国 和 欧 洲) 的 主 要 P y t h o n 会 议 上 发 表 演 讲。 总 之, 他 有 丰 富 的 分 布 式 协 同 经 验, 1 0 多 年 来 一 直 参 与 F L O S S 开 发 并 与 全 球 人 员 合 作。
他 曾 在 T e l e f o ́ n i c a M o ́ v i l e s 和 E r i c s s o n 担 任 电 信 工 程 师, 还 曾 在 C y c l e l o g i c 担 任 P y t h o n 专 家 ( 首 席 开 发 工 程 师), 目 前 的 职 务 是 C a n o n i c a l 的 高 级 软 件 开 发 工 程 师。
他 还 喜 欢 打 网 球, 同 时 是 两 个 可 爱 宝 宝 的 父 亲。
前 言
P y t h o n 很 棒!
从 2 0 世 纪 8 0 年 代 末 出 现 的 最 早 版 本 到 当 前 版 本, P y t h o n 的 发 展 一 直 遵 循 着 相 同 的 理 念: 提 供 一 个 同 时 具 备 可 读 性 和 生 产 力 的 多 范 式 编 程 语 言。
人 们 曾 经 将 P y t h o n 看 作 另 一 种 脚 本 语 言, 认 为 它 不 适 合 构 建 大 型 系 统。 但 多 年 以 来, 在 一 些 先 驱 公 司 的 努 力 下, P y t h o n 显 然 可 以 用 于 构 建 几 乎 任 何 类 型 的 系 统。
实 际 上, 许 多 其 他 语 言 的 开 发 者 也 醉 心 于 P y t h o n, 并 将 它 作 为 首 选 语 言。
如 果 你 购 买 了 这 本 书, 可 能 已 经 知 道 这 些 内 容 了, 所 以 无 需 再 向 你 证 明 这 门 语 言 的 优 点。
本 书 展 现 了 作 者 多 年 构 建 各 种 P y t h o n 应 用 的 经 验, 从 几 个 小 时 完 成 的 小 型 系 统 脚 本, 到 许 多 开 发 人 员 历 经 数 年 编 写 的 大 型 应 用。
本 书 描 述 了 开 发 人 员 使 用 P y t h o n 的 最 佳 实 践。
本 书 包 含 了 一 些 主 题, 这 些 主 题 并 不 关 注 语 言 本 身, 而 是 更 多 地 关 注 如 何 利 用 相 关 的 工 具 和 技 术。
换 句 话 说, 本 书 描 述 了 高 级 P y t h o n 开 发 人 员 每 天 的 工 作 方 式。
本 书 内 容
第 1 章 介 绍 了 P y t h o n 语 言 及 其 社 区 的 现 状。 本 章 展 示 了 P y t h o n 不 断 变 化 的 方 式 及 原 因, 还 解 释 了 为 什 么 这 些 事 实 对 任 何 想 要 自 称 P y t h o n 专 家 的 人 来 说 是 很 重 要 的。 本 章 还 介 绍 了 最 流 行 和 最 公 认 的 P y t h o n 工 作 方 式—— 常 用 的 生 产 力 工 具 和 现 已 成 为 标 准 的 约 定。
第 2 章 深 入 介 绍 迭 代 器、 生 成 器、 描 述 符 等 内 容。 本 章 还 包 括 关 于 P y t h o n 习 语 和 C P y t h o n 类 型 内 部 实 现 的 有 用 注 释, 这 些 类 型 的 计 算 复 杂 度 是 对 这 些 习 语 的 阐 释。
第 3 章 介 绍 了 语 法 最 佳 实 践, 但 重 点 放 在 类 级 别 以 上。 本 章 包 括 P y t h o n 中 更 高 级 的 面 向 对 象 的 概 念 和 机 制。 学 习 这 些 知 识 是 为 了 理 解 本 章 最 后 一 节 的 内 容, 其 中 介 绍 的 是 P y t h o n 元 编 程 的 各 种 方 法。
第 4 章 介 绍 了 如 何 选 择 好 的 名 称。 它 是 对 P E P 8 中 命 名 最 佳 实 践 的 扩 展, 并 且 给 出 了 一 些 如 何 设 计 良 好 A P I 的 提 示。
第 5 章 介 绍 如 何 创 建 P y t h o n 包 以 及 使 用 哪 些 工 具, 以 便 在 官 方 的 P y t h o n 包 索 引 或 其 他 包 仓 库 中 正 确 地 分 发。 对 于 P y t h o n 包 还 补 充 了 一 些 工 具 的 简 要 回 顾, 这 些 工 具 可 以 让 你 用 P y t h o n 源 代 码 创 建 独 立 可 执 行 文 件。
第 6 章 主 要 针 对 P y t h o n W e b 开 发 人 员 和 后 端 工 程 师, 因 为 讲 的 是 代 码 部 署。 本 章 解 释 了 如 何 构 建 P y t h o n 应 用, 使 其 可 以 轻 松 部 署 到 远 程 服 务 器, 还 介 绍 了 可 以 将 这 个 过 程 自 动 化 的 工 具。 本 章 是 第 5 章 的 延 续, 因 此 还 介 绍 了 如 何 使 用 包 和 私 有 包 仓 库 来 简 化 应 用 部 署。
第 7 章 解 释 了 为 什 么 为 P y t h o n 编 写 C 扩 展 程 序 有 时 可 能 是 一 个 好 的 解 决 方 案。 本 章 还 展 示 了 只 要 使 用 了 正 确 的 工 具, 它 并 不 像 想 象 中 那 么 难。
第 8 章 深 入 介 绍 了 项 目 代 码 库 的 管 理 方 式, 还 介 绍 了 如 何 设 置 各 种 持 续 开 发 流 程。
第 9 章 包 含 文 档 相 关 的 内 容, 提 供 了 有 关 技 术 写 作 和 P y t h o n 项 目 文 档 化 方 式 的 建 议。
第 1 0 章 解 释 了 测 试 驱 动 开 发 的 基 本 原 理, 还 介 绍 了 可 用 于 这 种 开 发 方 法 的 工 具。
第 1 1 章 解 释 了 何 为 优 化, 介 绍 了 分 析 技 术 和 优 化 策 略 指 南。
第 1 2 章 是 对 第 1 1 章 的 扩 展, 为 P y t h o n 程 序 中 经 常 出 现 的 性 能 问 题 提 供 了 一 些 常 用 的 解 决 方 案。
第 1 3 章 介 绍 了 P y t h o n 并 发 这 一 宏 大 的 主 题。 本 章 解 释 了 并 发 的 概 念、 何 时 需 要 编 写 并 发 应 用, 以 及 P y t h o n 程 序 员 主 要 使 用 的 并 发 方 法。
第 1 4 章 用 一 套 有 用 的 设 计 模 式 以 及 P y t h o n 的 代 码 示 例 对 本 书 进 行 了 总 结。
阅 读 本 书 的 前 提
本 书 面 向 的 是 可 以 在 任 何 操 作 系 统 上 使 用 P y t h o n 3 进 行 软 件 开 发 的 人 员。
这 不 是 一 本 面 向 初 学 者 的 书, 所 以 我 假 设 你 已 经 在 开 发 环 境 中 安 装 了 P y t h o n, 或 者 知 道 如 何 安 装 P y t h o n。 不 管 怎 样, 本 书 考 虑 到 以 下 事 实: 不 是 每 个 人 都 需 要 充 分 了 解 P y t h o n 的 最 新 功 能 或 官 方 推 荐 的 工 具。 因 此, 第 1 章 概 述 了 常 见 的 实 用 程 序 ( 例 如 虚 拟 环 境 和 p i p), 这 些 实 用 程 序 现 在 已 经 成 为 P y t h o n 专 业 开 发 人 员 的 标 准 工 具。
目 标 读 者
本 书 面 向 的 是 想 要 进 一 步 掌 握 P y t h o n 的 开 发 人 员。 开 发 人 员 主 要 指 的 是 专 业 人 士, 即 用 P y t h o n 编 写 软 件 的 程 序 员。 这 是 因 为 本 书 主 要 侧 重 于 工 具 和 实 践, 它 们 对 于 创 建 高 性 能 的、 可 靠 且 可 维 护 的 P y t h o n 软 件 至 关 重 要。
这 并 不 意 味 着 业 余 爱 好 者 无 法 从 本 书 中 发 现 有 趣 的 内 容。 对 于 任 何 对 学 习 P y t h o n 高 级 概 念 感 兴 趣 的 人 来 说, 本 书 都 是 很 棒 的。 任 何 具 备 P y t h o n 基 本 技 能 的 人 都 应 该 能 够 读 懂 本 书 的 内 容, 虽 然 经 验 不 足 的 程 序 员 可 能 需 要 一 些 额 外 的 努 力。 对 于 有 点 落 后 仍 在 继 续 使 用 P y t h o n 2. 7 或 更 老 版 本 的 人 来 说, 本 书 也 是 对 P y t h o n 3. 5 的 全 面 介 绍。
最 后, 从 阅 读 本 书 中 受 益 最 多 的 人 群 应 该 是 W e b 开 发 者 和 后 端 工 程 师。 这 是 因 为 本 书 重 点 介 绍 了 在 他 们 的 工 作 领 域 中 特 别 重 要 的 两 个 主 题: 可 靠 的 代 码 部 署 与 并 发。
本 书 约 定
本 书 用 多 种 文 本 样 式 来 区 分 不 同 种 类 的 信 息。 下 面 是 这 些 样 式 的 示 例 及 其 含 义 解 释。
文 本 中 的 代 码、 数 据 库 表 的 名 称、 文 件 夹 名 称、 文 件 名 称、 文 件 扩 展 名、 路 径 名 称、 虚 拟 U R L、 用 户 输 入 和 T w i t t e r 句 柄 的 格 式 如 下 所 示: 利 用s t r. e n c o d e ( e n c o d i n g, e r r o r s)方 法, 用 注 册 编 解 码 器 对 字 符 串 进 行 编 码。
代 码 块 的 格 式 如 下 所 示:
[ p r i n t ( h e l l o w o r l d
)
p r i n t g o o d b y e p y t h o n 2
如 果 我 们 想 让 你 将 注 意 力 集 中 在 代 码 块 的 特 定 区 域, 相 关 的 几 行 或 几 项 将 会 被 设 成 粗 体, 如 下 所 示:
c d e f l o n g l o n g f i b o n a c c i _ c c ( u n s i g n e d i n t n) n o g i l:
i f n < 2:
r e t u r n n
e l s e:
r e t u r n f i b o n a c c i _ c c ( n - 1) + f i b o n a c c i _ c c ( n - 2)
命 令 行 的 输 入 或 输 出 如 下 所 示:
$ p i p s h o w p i p - - - M e t a d a t a - V e r s i o n: 2. 0 N a m e: p i p V e r s i o n: 7. 1. 2 S u m m a r y: T h e P y P A r e c o m m e n d e d t o o l f o r i n s t a l l i n g P y t h o n p a c k a g e s. H o m e - p a g e: h t t p s: / / p i p. p y p a. i o / A u t h o r: T h e p i p d e v e l o p e r s A u t h o r - e m a i l: p y t h o n - v i r t u a l e n v @ g r o u p s. g o o g l e. c o m L i c e n s e: M I T L o c a t i o n: / u s r / l i b / p y t h o n 2. 7 / s i t e - p a c k a g e s R e q u i r e s:
新 术 语和重 要 词 语将 以 粗 体 显 示。 你 会 在 屏 幕 上 看 到 的 单 词 ( 例 如 在 菜 单 或 对 话 框 中) 将 以 下 面 这 种 文 本 形 式 出 现: " 单 击N e x t按 钮 可 跳 转 至 下 一 屏"。
读 者 反 馈
我 们 十 分 欢 迎 读 者 的 反 馈 意 见。 让 我 们 了 解 你 对 本 书 的 看 法—— 喜 欢 哪 些 内 容, 不 喜 欢 哪 些 内 容。 这 些 反 馈 对 我 们 很 重 要, 因 为 它 有 助 于 我 们 编 写 出 对 读 者 真 正 有 帮 助 的 书。
一 般 性 的 反 馈 请 发 送 邮 件 至 f e e d b a c k @ p a c k t p u b. c o m, 并 在 邮 件 主 题 中 注 明 本 书 的 标 题。
如 果 你 是 某 个 领 域 的 专 家, 并 且 有 兴 趣 写 一 本 书 或 者 参 与 出 版 一 本 书, 请 参 阅 我 们 的 作 者 指 南。
客 户 支 持
现 在 你 已 经 成 为 这 本 P a c k t 图 书 的 拥 有 者, 为 了 让 你 的 购 买 物 超 所 值, 我 们 还 为 你 提 供 了 许 多 其 他 方 面 的 服 务。
下 载 示 例 代 码
你 可 以 用 自 己 的 账 号 在 P a c k t 的 官 方 网 站 下 载 本 书 的 示 例 代 码 文 件。 如 果 你 是 在 其 他 地 方 购 买 的 本 书, 可 以 访 问 P a c k t 的 官 方 网 站 并 注 册, 文 件 会 直 接 通 过 邮 件 发 送 给 你。
下 载 代 码 文 件 的 步 骤 如 下 所 示。
用 你 的 电 子 邮 件 地 址 和 密 码 登 录 或 注 册 我 们 的 网 站。
将 鼠 标 指 针 悬 停 在 顶 部 的S U P P O R T选 项 卡 上。
单 击C o d e D o w n l o a d s & E r r a t a。
在S e a r c h框 中 输 入 本 书 的 名 字。
选 择 你 要 下 载 代 码 文 件 的 书 籍。
从 下 拉 菜 单 中 选 择 本 书 的 购 买 途 径。
单 击C o d e D o w n l o a d。
你 还 可 以 在 P a c k t 网 站 的 本 书 页 面 单 击C o d e F i l e s按 钮 来 下 载 代 码 文 件。 在S e a r c h框 输 入 本 书 的 书 名 即 可 访 问 该 页 面。 请 注 意, 你 需 要 登 录 P a c k t 账 号。
文 件 下 载 完 成 后, 请 确 保 用 下 列 软 件 的 最 新 版 本 对 文 件 夹 进 行 解 压 或 提 取。
在 W i n d o w s 上 用 W i n R A R 或 7 - Z i p。
在 M a c 上 用 Z i p e g、 i Z i p 或 U n R a r X。
在 L i n u x 上 用 7 - Z i p 或 P e a Z i p。
本 书 的 代 码 包 也 托 管 在 G i t H u b, 网 址 为 h t t p s: / / g i t h u b. c o m / P a c k t P u b l i s h i n g / E x p e r t - P y t h o n - P r o g r a m m i n g _ S e c o n d - E d i t i o n。 在 G i t H u b 上 还 有 大 量 图 书 和 视 频 资 源。 快 去 看 一 下 吧!
勘 误
尽 管 我 们 已 经 竭 尽 全 力 确 保 本 书 内 容 的 准 确 性, 但 错 误 在 所 难 免。 如 果 你 发 现 了 书 中 的 错 误, 无 论 是 正 文 错 误 还 是 代 码 错 误, 希 望 你 能 将 其 报 告 给 我 们, 我 们 将 不 胜 感 激。 这 样 不 仅 能 够 减 少 其 他 读 者 的 困 惑, 还 能 帮 助 我 们 改 进 本 书 后 续 版 本 的 质 量。 如 果 你 需 要 提 交 勘 误, 请 访 问 h t t p: / / w w w. p a c k t p u b. c o m / s u b m i t - e r r a t a, 选 择 相 应 的 书 名, 单 击E r r a t a S u b m i s s i o n F o r m链 接, 然 后 输 入 你 的 勘 误 信 息 并 提 交。 一 旦 通 过 验 证, 我 们 将 接 受 你 提 交 的 勘 误, 同 时 勘 误 内 容 也 将 被 上 传 到 我 们 的 网 站, 或 者 被 添 加 到 对 应 勘 误 区 的 现 有 勘 误 列 表 中。
想 要 查 看 之 前 提 交 的 勘 误, 请 访 问 h t t p s: / / w w w. p a c k t p u b. c o m / b o o k s / c o n t e n t / s u p p o r t, 并 在 搜 索 框 中 输 入 相 应 的 书 名。 你 想 查 看 的 信 息 将 出 现 在E r r a t a下 面。
侵 权 行 为
所 有 媒 体 在 互 联 网 上 都 一 直 饱 受 版 权 侵 害 的 困 扰。 P a c k t 坚 持 对 版 权 和 授 权 进 行 全 力 保 护。 如 果 你 在 互 联 网 上 发 现 我 社 图 书 任 何 形 式 的 盗 版, 请 立 即 为 我 们 提 供 网 址 或 网 站 名 称, 以 便 我 们 采 取 进 一 步 的 措 施。
请 将 疑 似 盗 版 材 料 的 链 接 发 送 到 c o p y r i g h t @ p a c k t p u b. c o m。
我 们 感 谢 你 对 作 者 的 保 护, 这 有 助 于 我 们 继 续 为 你 提 供 更 有 价 值 的 内 容。
疑 难 解 答
如 果 你 对 本 书 的 某 个 方 面 抱 有 疑 问, 请 通 过 q u e s t i o n s @ p a c k t p u b. c o m 联 系 我 们, 我 们 会 尽 力 为 你 解 决。
第 1 章 P y t h o n 现 状
P y t h o n 很 适 合 开 发 者 使 用。
无 论 你 或 你 的 客 户 用 的 是 什 么 操 作 系 统, 都 可 以 使 用 P y t h o n。 例 如 你 可 以 在 L i n u x 上 工 作, 然 后 部 署 到 其 他 系 统 上, 除 非 你 的 代 码 与 特 定 平 台 相 关, 或 者 用 到 了 特 定 平 台 的 库。 但 这 一 特 性 已 经 不 新 鲜 了 ( R u b y、 J a v a 等 很 多 其 他 语 言 都 可 以 做 到 这 一 点)。 本 书 还 会 讲 到 P y t h o n 的 其 他 特 性, 所 有 这 些 特 性 是 使 得 P y t h o n 成 为 一 家 公 司 主 力 开 发 语 言 的 重 要 原 因。
本 书 主 要 讲 的 是 P y t h o n 的 3. 5 版 本, 如 果 没 有 明 确 说 明 的 话, 书 中 所 有 代 码 示 例 都 是 用 这 个 版 本 的 P y t h o n 编 写 的。 由 于 这 一 版 本 尚 未 被 广 泛 使 用, 本 章 将 会 向 读 者 介 绍 一 下 P y t h o n 3 的 当 前 现 状, 同 时 介 绍 P y t h o n 的 现 代 开 发 方 法。 本 章 主 要 包 括 以 下 内 容。
如 何 保 持 P y t h o n 2 和 P y t h o n 3 之 间 的 兼 容 性。
为 了 开 发 的 顺 利 进 行, 在 应 用 层 面 和 操 作 系 统 层 面 如 何 解 决 开 发 环 境 隔 离 的 问 题。
如 何 增 强 P y t h o n 提 示 符 的 功 能。
如 何 使 用 p i p 安 装 P y t h o n 包。
每 本 书 的 开 头 都 要 来 点 开 胃 小 菜。 如 果 你 对 P y t h o n 已 经 很 熟 悉 了 ( 特 别 是 最 新 的 3. x 版 本), 并 且 掌 握 了 开 发 中 做 环 境 隔 离 的 正 确 方 法, 你 可 以 跳 过 本 章 的 前 两 节, 快 速 阅 读 其 他 小 节 即 可。 其 他 小 节 会 讲 到 一 些 工 具 和 资 源, 它 们 并 非 必 不 可 少, 但 可 以 大 大 提 高 P y t h o n 开 发 效 率。 不 过 一 定 要 读 一 下 关 于 应 用 层 环 境 隔 离 和 p i p 的 一 节, 因 为 这 一 节 提 到 的 工 具 会 在 本 书 后 面 的 内 容 中 用 到。
1. 1 P y t h o n 的 现 状 与 未 来
P y t h o n 的 历 史 最 早 可 追 溯 到 2 0 世 纪 8 0 年 代 末, 但 是 1. 0 版 的 发 行 时 间 是 在 1 9 9 4 年, 所 以 P y t h o n 并 不 是 一 门 非 常 年 轻 的 语 言。 这 里 本 该 介 绍 P y t h o n 主 要 版 本 发 布 的 整 个 时 间 线, 但 其 实 真 正 重 要 的 日 期 只 有 一 个: 2 0 0 8 年 1 2 月 3 日, 也 就 是 P y t h o n 3. 0 的 发 布 日 期。
在 写 作 本 书 时, P y t h o n 3 的 首 次 发 布 已 经 过 去 了 7 年。 P E P 4 0 4 也 已 经 创 建 了 4 年, P E P 4 0 4 是 取 消 发 布
( u n - r e l e a s e) P y t h o n 2. 8 并 正 式 关 闭 P y t h o n 2. x 分 支 的 官 方 文 档。 虽 然 过 去 了 这 么 长 的 时 间, P y t h o n 社 区 中 依 然 存 在 明 显 的 分 歧。 语 言 本 身 在 迅 速 发 展, 但 大 量 用 户 却 并 不 想 更 新 版 本。
1. 2 P y t h o n 升 级 及 其 原 因
原 因 很 简 单。 P y t h o n 升 级 是 因 为 有 这 样 的 需 求。 语 言 之 间 的 竞 争 随 时 都 在 上 演。 每 隔 几 个 月 都 会 突 然 冒 出 一 门 新 语 言, 声 称 解 决 了 之 前 所 有 语 言 中 存 在 的 问 题。 对 于 大 多 数 类 似 的 项 目, 开 发 人 员 很 快 就 会 失 去 兴 趣, 它 们 的 名 气 也 只 是 一 时 炒 作。
不 管 怎 样, 这 也 表 示 存 在 着 更 严 重 的 问 题。 人 们 之 所 以 设 计 新 的 编 程 语 言, 是 因 为 他 们 发 现 现 有 的 语 言 无 法 以 最 佳 方 式 来 解 决 问 题。 认 识 不 到 这 样 的 需 求 是 目 光 短 浅 的。 此 外, P y t h o n 的 使 用 范 围 也 越 来 越 广 泛, 人 们 发 现 它 有 许 多 可 以 改 进 的 地 方, 也 应 该 做 出 这 样 的 改 进。
P y t h o n 的 很 多 改 进 往 往 是 由 特 定 应 用 领 域 的 需 求 驱 动 的。 其 中 最 重 要 的 领 域 是 W e b 开 发, 这 一 领 域 需 要 P y t h o n 改 进 对 并 发 的 处 理。
有 些 变 化 只 是 由 于 P y t h o n 项 目 的 历 史 原 因 导 致 的。 这 些 年 已 经 发 现 了 P y t h o n 的 一 些 不 合 理 之 处, 有 些 是 标 准 库 模 块 结 构 混 乱 或 冗 余, 有 些 是 程 序 设 计 缺 陷。 最 初, 发 布 P y t h o n 3 是 要 对 这 门 语 言 进 行 较 大 的 清 理 与 更 新, 但 结 果 显 示, 这 个 计 划 并 没 有 收 到 预 期 的 效 果。 在 很 长 一 段 时 间 内, 很 多 开 发 人 员 对 P y t h o n 3 只 是 抱 着 好 奇 的 态 度 而 已, 但 希 望 这 种 情 形 正 在 好 转。
1. 3 追 踪 P y t h o n 最 新 变 化—— P E P 文 档
P y t h o n 社 区 有 一 种 应 对 变 化 的 固 定 方 法。 虽 然 各 种 各 样 的 P y t h o n 语 言 修 改 意 见 主 要 在 邮 件 列 表 (p y t h o n - i d e a s @ p y t h o n. o r g) 中 进 行 讨 论, 但 只 有 发 布 了 名 为 P E P 的 新 文 档, 新 的 变 化 才 会 生 效。P E P的 全 称 是P y t h o n改 进 提 案( P y t h o n E n h a n c e m e n t P r o p o s a l, P E P)。 它 是 提 交 P y t h o n 变 化 的 书 面 文 档, 也 是 社 区 对 这 一 变 化 进 行 讨 论 的 出 发 点。 这 些 文 档 的 整 个 目 的、 格 式 和 工 作 流 程 的 标 准 格 式 也 都 包 含 在 一 份 P y t h o n 改 进 提 案 中, 也 就 是 P E P 1 文 档 ( h t t p: / / w w w. p y t h o n. o r g / d e v / p e p s / p e p - 0 0 0 1)。
P E P 文 档 对 P y t h o n 的 作 用 十 分 重 要, 根 据 讨 论 的 主 题, P E P 主 要 有 以 下 3 种 用 途。
通 知: 汇 总 P y t h o n 核 心 开 发 者 需 要 的 信 息, 并 通 知 P y t h o n 发 布 日 程。
标 准 化: 提 供 代 码 风 格、 文 档 或 其 他 指 导 意 见。
设 计: 对 提 交 的 功 能 进 行 说 明。
所 有 提 交 过 的 P E P 都 被 汇 总 在 一 个 文 档 中, 就 是 P E P 0 ( h t t p s: / / w w w. p y t h o n. o r g / d e v / p e p s /)。 由 于 这 些 P E P 都 在 同 一 个 网 站 上 很 容 易 找 到, 其 U R L 也 很 容 易 猜 到, 因 此 本 书 一 般 用 编 号 来 指 代 这 些 文 档。
如 果 你 对 P y t h o n 语 言 的 未 来 发 展 方 向 感 兴 趣, 但 又 没 时 间 跟 踪 P y t h o n 邮 件 列 表 中 的 讨 论, 那 么 P E P 0 会 是 很 好 的 信 息 来 源。 它 会 告 诉 你, 哪 些 文 档 已 被 接 受 但 尚 未 实 施, 哪 些 文 档 仍 在 审 议 中。
P E P 还 有 其 他 的 用 途。 人 们 通 常 会 问 这 样 的 问 题:
A 功 能 为 什 么 要 以 这 样 的 方 式 运 行?
P y t h o n 为 什 么 没 有 B 功 能?
大 多 数 情 况 下, 关 于 该 功 能 的 某 个 P E P 文 档 已 经 给 出 了 上 述 问 题 的 详 细 回 答。 很 多 提 交 的 关 于 P y t h o n 语 言 功 能 的 P E P 文 档 并 没 有 通 过。 这 些 文 档 可 作 为 历 史 资 料 来 参 考。
1. 4 当 前 P y t h o n 3 的 普 及 程 度
P y t h o n 3 有 许 多 强 大 的 新 功 能, 那 么 它 在 社 区 中 广 泛 普 及 了 吗? 遗 憾 的 是, 并 没 有。 有 一 个 著 名 的 网 站 叫 P y t h o n 3 荣 耀 之 墙 ( P y t h o n 3 W a l l o f S u p e r p o w e r s)
, 里 面 记 录 了 大 多 数 常 用 软 件 包 与 P y t h o n 3 的 兼 容 性, 不 久 前 这 个 网 站 刚 刚 改 名 为 P y t h o n 3 耻 辱 之 墙 ( P y t h o n 3 W a l l o f S h a m e)
。 目 前 这 种 状 况 正 在 逐 步 改 善, 上 述 网 站 的 软 件 包 列 表 中 绿 色 的 比 例 也 在 每 月 缓 慢 增 加[ 1]。 尽 管 如 此, 但 这 并 不 代 表 很 快 所 有 应 用 开 发 团 队 都 只 使 用 P y t h o n 3。 当 所 有 常 用 软 件 包 都 支 持 P y t h o n 3 时, 我 们 所 用 的 软 件 包 还 没 有 迁 移 到 P y t h o n 3
这 一 常 用 借 口 将 不 再 适 用。
造 成 目 前 这 种 状 况 的 主 要 原 因 是, 将 现 有 应 用 从 P y t h o n 2 迁 移 到 P y t h o n 3 上 总 是 一 项 不 小 的 挑 战。 像2 t o 3之 类 的 工 具 可 以 进 行 代 码 自 动 转 换, 但 无 法 保 证 转 换 后 的 代 码 1 0 0% 正 确。 而 且, 如 果 不 做 人 工 修 改 的 话, 转 换 后 的 代 码 性 能 可 能 不 如 转 换 前。 将 现 有 的 复 杂 代 码 库 迁 移 到 P y t h o n 3 上 可 能 需 要 付 出 巨 大 的 精 力 和 成 本, 某 些 公 司 可 能 无 法 负 担 这 些 成 本。 但 这 些 成 本 可 以 分 割 成 小 份 来 逐 步 完 成。 一 些 优 秀 的 软 件 架 构 设 计 方 法 可 以 帮 助 其 逐 步 实 现 这 一 目 标, 如 面 向 服 务 的 架 构 或 者 微 服 务。 新 的 项 目 组 件 ( 服 务 或 微 服 务) 可 以 用 新 方 法 编 写, 现 有 的 项 目 组 件 可 以 逐 步 迁 移。
长 远 来 看, 将 项 目 迁 移 到 P y t h o n 3 只 有 好 处。 根 据 P E P - 4 0 4 这 份 文 档, P y t h o n 2. x 分 支 将 不 会 发 布 2. 8 版 本。 而 且 未 来 所 有 重 要 的 项 目 ( 如 D j a n g o、 F l a s k 和 N u m P y) 可 能 都 将 放 弃 2. x 的 兼 容 性, 仅 支 持 P y t h o n 3。
我 个 人 对 这 个 问 题 的 观 点 可 能 会 引 发 争 议。 我 认 为 在 创 建 新 的 软 件 包 时, 最 好 鼓 励 社 区 完 全 放 弃 支 持 P y t h o n 2。 当 然, 这 一 做 法 极 大 地 限 制 了 这 些 软 件 的 适 用 范 围, 但 对 于 那 些 坚 持 使 用 P y t h o n 2. x 的 人 来 说, 这 可 能 是 改 变 他 们 想 法 的 唯 一 方 法。
1. 5 P y t h o n 3 和 P y t h o n 2 的 主 要 差 异
前 面 已 经 说 过, P y t h o n 3 打 破 了 对 P y t h o n 2 的 向 后 兼 容。 但 它 并 不 是 完 全 重 新 设 计 的。 而 且, 也 并 不 是 说 2. x 版 本 的 P y t h o n 模 块 在 P y t h o n 3 下 都 无 法 运 行。 代 码 可 以 完 全 跨 版 本 兼 容, 无 需 其 他 工 具 或 技 术 在 两 大 版 本 上 都 可 以 运 行, 但 一 般 只 有 简 单 应 用 才 能 做 到 这 一 点。
1. 5. 1 为 什 么 要 关 注 这 些 差 异
本 章 前 面 说 过 我 个 人 对 P y t h o n 2 兼 容 性 的 看 法, 但 是 目 前 不 可 能 完 全 忽 视 这 一 点。 还 有 一 些 P y t h o n 包 ( 例 如 第 6 章 将 讲 到 的f a b r i c) 十 分 实 用, 但 可 能 短 期 内 不 会 迁 移 到 P y t h o n 3。
另 外, 有 时 我 们 还 会 受 到 所 在 公 司 的 制 约。 现 有 的 遗 留 代 码 可 能 非 常 复 杂, 迁 移 代 码 的 费 用 难 以 承 受。 所 以 即 使 我 们 现 在 决 定 只 用 P y t h o n 3, 短 期 内 也 不 可 能 完 全 放 弃 P y t h o n 2。
如 今 想 要 自 称 专 业 开 发 者, 没 有 对 社 区 的 回 馈 是 说 不 过 去 的, 所 以 帮 助 开 源 软 件 开 发 者 向 现 有 软 件 包 中 添 加 对 P y t h o n 3 的 兼 容, 可 以 很 好 地 偿 还 在 使 用 这 些 软 件 包 时 产 生 的 道 德 债 ( m o r a l d e b t)
。 当 然, 不 了 解 P y t h o n 2 和 P y t h o n 3 的 差 异 是 无 法 做 到 这 一 点 的。 顺 便 提 一 下, 对 于 P y t h o n 3 新 手 来 说, 这 也 是 一 项 很 好 的 练 习。
1. 5. 2 主 要 的 语 法 差 异 和 常 见 陷 阱
要 比 较 不 同 版 本 之 间 的 差 异, 最 好 的 参 考 资 料 就 是 P y t h o n 文 档。 不 过 为 了 方 便 读 者, 本 节 总 结 了 其 中 最 重 要 的 内 容。 但 不 熟 悉 P y t h o n 3 的 读 者 还 是 要 去 阅 读 官 方 文 档。
P y t h o n 3 引 入 的 重 要 差 异 一 般 可 分 为 以 下 几 个 方 面。
语 法 变 化, 删 除 / 修 改 了 一 些 语 法 元 素, 并 添 加 了 一 些 新 的 语 法 元 素。
标 准 库 中 的 变 化。
数 据 类 型 与 集 合 的 变 化。
1. 语 法 变 化
有 些 语 法 变 化 会 导 致 当 前 代 码 无 法 运 行, 这 些 变 化 是 最 容 易 发 现 的, 它 们 会 导 致 代 码 根 本 无 法 运 行。 包 含 新 语 法 元 素 的 P y t h o n 3 代 码 在 P y t h o n 2 中 无 法 运 行, 反 之 亦 然。 由 于 删 除 了 某 些 元 素, 导 致 P y t h o n 2 代 码 显 然 无 法 与 P y t h o n 3 兼 容。 运 行 有 这 些 问 题 的 代 码 时, 解 释 器 很 快 就 会 抛 出S y n t a x E r r o r异 常。 下 面 是 一 个 无 法 运 行 的 脚 本 示 例, 只 包 含 两 个 语 句, 都 会 引 发 语 法 错 误 而 无 法 运 行:
p r i n t ( h e l l o w o r l d
)
p r i n t g o o d b y e p y t h o n 2
上 述 代 码 在 P y t h o n 3 中 的 实 际 运 行 结 果 如 下:
$ p y t h o n 3 s c r i p t. p y F i l e s c r i p t. p y
, l i n e 2 p r i n t g o o d b y e p y t h o n 2
^ S y n t a x E r r o r: M i s s i n g p a r e n t h e s e s i n c a l l t o ' p r i n t '
列 出 所 有 的 语 法 差 异 会 比 较 长, 而 且 P y t h o n 3. x 的 新 版 本 也 会 不 时 添 加 新 的 语 法 元 素, 在 较 早 版 本 的 P y t h o n 中 就 会 引 发 错 误 ( 即 使 在 相 同 的 3. x 版 本 上 也 会 报 错)。 其 中 最 重 要 的 语 法 差 异 将 会 在 第 2 章 和 第 3 章 中 讲 到, 所 以 这 里 无 需 全 部 列 出。
与 P y t h o n 2. 7 相 比, 删 除 或 改 动 的 内 容 要 相 对 少 一 些, 下 面 给 出 最 重 要 的 变 化 内 容。
p r i n t不 再 是 一 条 语 句 而 是 一 个 函 数, 所 以 必 须 加 上 括 号。
捕 获 异 常 的 语 法 由e x c e p t e x c, v a r改 为e x c e p t e x c a s v a r。
弃 用 比 较 运 算 符<>, 改 用! =。
f r o m m o d u l e i m p o r t *( h t t p s: / / d o c s. p y t h o n. o r g / 3. 0 / r e f e r e n c e / s i m p l e _ s t m t s. h t m l # i m p o r t) 现 在 只 能 用 于 模 块, 不 能 用 在 函 数 中。
现 在f r o m . [ m o d u l e] i m p o r t n a m e是 相 对 导 入 的 唯 一 正 确 的 语 法。 所 有 不 以 点 字 符 开 头 的 导 入 都 被 当 作 绝 对 导 入。
s o r t e d函 数 与 列 表 的s o r t方 法 不 再 接 受c m p参 数, 应 该 用k e y参 数 来 代 替。
整 数 除 法 表 达 式 ( 如1 / 2) 返 回 的 是 浮 点 数。 取 整 运 算 可 以 用/ /运 算 符, 如1 / / 2。 这 样 做 的 好 处 是 浮 点 数 也 可 以 用 这 个 运 算 符, 所 以5. 0 / / 2. 0 = = 2. 0。
2. 标 准 库 中 的 变 化
语 法 变 化 很 容 易 发 现, 标 准 库 中 的 重 大 变 化 也 是 非 常 容 易 发 现 的。 P y t h o n 的 每 个 后 续 版 本 都 会 向 标 准 库 模 块 中 添 加、 弃 用、 改 进 或 完 全 删 除 某 些 内 容。 在 旧 版 P y t h o n ( 1. x 和 2. x) 中 也 会 定 期 有 这 样 的 变 化, 所 以 出 现 在 P y t h o n 3 中 并 不 让 人 吃 惊。 大 多 数 情 况 下, 对 于 删 除 或 重 组 的 模 块 ( 例 如u r l p a r s e移 到 了u r l l i b. p a r s e), 在 运 行 解 释 器 时 会 对 导 入 语 句 抛 出 异 常。 这 样 的 问 题 很 容 易 发 现。 无 论 如 何, 为 了 确 保 能 够 发 现 所 有 类 似 的 问 题, 完 整 的 代 码 测 试 覆 盖 率 是 必 不 可 少 的。 在 某 些 情 况 下 ( 例 如 使 用 延 迟 加 载 模 块 时), 这 个 通 常 在 全 局 导 入 时 出 现 的 问 题 并 不 会 出 现, 直 到 在 代 码 中 将 某 些 模 块 作 为 函 数 调 用 时 才 会 出 现。 因 此, 在 测 试 期 间 确 保 每 行 代 码 都 要 实 际 运 行 是 很 重 要 的。
3. 数 据 类 型 与 集 合 的 变 化
开 发 人 员 在 努 力 保 持 兼 容 性 或 只 是 将 现 有 代 码 迁 移 到 P y t h o n 3 上 时, 需 要 特 别 注 意 P y t h o n 中 数 据 类 型 与 集 合 的 表 示 方 式 的 变 化。 虽 然 不 兼 容 的 语 法 变 化 或 标 准 库 变 化 很 容 易 发 现, 也 很 容 易 修 复, 但 集 合 与 数 据 类 型 的 变 化 要 么 难 以 察 觉, 要 么 需 要 大 量 的 重 复 工 作。 这 样 的 变 化 列 表 会 很 长, 再 次 重 申, 官 方 文 档 是 最 好 的 参 考 资 料。
不 过, 这 一 节 必 须 讲 一 下 P y t h o n 3 中 字 符 串 处 理 方 式 的 变 化, 因 为 这 是 P y t h o n 3 中 最 具 争 议 也 是 讨 论 最 多 的 变 化, 尽 管 这 是 一 件 好 事, 使 很 多 问 题 变 得 更 加 明 确。
现 在 所 有 字 符 串 都 是 U n i c o d e, 字 节 (b y t e s) 需 要 加 一 个b或B的 前 缀。 P y t h o n 3. 0 和 3. 1 不 支 持 使 用u前 缀 ( 例 如u f o o
), 使 用 的 话 会 引 发 语 法 错 误。 不 支 持 这 个 前 缀 是 引 发 所 有 争 议 的 主 要 原 因。 这 导 致 难 以 编 写 能 够 兼 容 P y t h o n 不 同 分 支 的 代 码, 2. x 版 需 要 用 这 个 前 缀 来 创 建 U n i c o d e。 P y t h o n 3. 3 又 恢 复 了 这 个 前 缀, 虽 然 没 有 任 何 语 法 上 的 意 义, 只 是 为 了
