您当前位置:主页 深入 Python 3

“深入 Python 3” 的新特性

我们不是从这里开始的吗?
— Pink Floyd,The Wall

 

又名 “负层”

您已经是 Python 程序员了吗?您阅读过原始的“深入 Python”吗?您在纸上购买了它吗? (如果是,谢谢!)您准备好开始学习 Python 3 吗? … 如果是,请继续阅读。(如果不是,您最好从开始学习。)

Python 3 附带一个名为 2to3 的脚本。学习它。爱上它。使用它。使用 2to3 将代码移植到 Python 3 是所有 2to3 工具可以自动修复的事项的参考。由于其中很多是语法更改,因此它是学习 Python 3 中许多语法更改的良好起点。(print 现在是一个函数,`x` 不起作用,&c。)

案例研究:将 chardet 移植到 Python 3 记录了我(最终成功)将一个非平凡库从 Python 2 移植到 Python 3 的过程。它可能对您有所帮助;也可能没有。这是一个相当陡峭的学习曲线,因为您首先需要了解该库,这样您才能了解它为什么崩溃以及我如何修复它。很多崩溃都集中在字符串上。说到字符串…

字符串。哇。从哪里开始。Python 2 有“字符串”和“Unicode 字符串”。Python 3 有“字节”和“字符串”。也就是说,现在所有字符串都是 Unicode 字符串,如果您想处理一组字节,可以使用新的 bytes 类型。Python 3 绝不会 在字符串和字节之间进行隐式转换,因此,如果您不确定在任何给定时刻拥有的是哪一个,您的代码几乎肯定会崩溃。阅读字符串章节 以了解更多详细信息。

字节与字符串在整本书中反复出现。

即使您不关心 Unicode(哦,但您会关心),您也需要了解Python 3 中的字符串格式化,它与 Python 2 完全不同。

迭代器在 Python 3 中无处不在,我比五年前写“深入 Python”时更了解它们。您也需要了解它们,因为在 Python 2 中曾经返回列表的许多函数现在将在 Python 3 中返回迭代器。至少,您应该阅读迭代器章节的后半部分高级迭代器章节的后半部分

根据用户的要求,我在特殊方法名称 上添加了一个附录,它有点像 Python 文档“数据模型”章节,但更尖酸刻薄。

当我写“深入 Python”时,所有可用的 XML 库都很糟糕。然后 Fredrik Lundh 写了 ElementTree,它一点也不糟糕。Python 之神明智地将 ElementTree 集成到标准库中,现在它构成了我新的 XML 章节 的基础。解析 XML 的旧方法仍然存在,但您应该避免使用它们,因为它们很糟糕!

Python 中的另一个新东西——不是语言本身,而是社区——是代码库的出现,例如 Python 包索引 (PyPI)。Python 附带实用程序来以标准格式打包您的代码,并将这些包分发到 PyPI 上。阅读打包 Python 库 以了解更多信息。

© 2001–11 Mark Pilgrim