从Python 2迁移到Python 3:核心变化与新特性

需积分: 9 1 下载量 6 浏览量 更新于2024-09-14 收藏 668KB PDF 举报
"Moving from Python 2 to Python 3 是一份针对已经熟悉 Python 2 的程序员的指南,旨在帮助他们过渡到 Python 3 开发。文档详细列出了不同版本间对象和习惯用法的变化,提供了从 Python 2 风格转换到 Python 3.1 风格的方法。此外,它还介绍了 Python 3.1 中的一些新特性。如果要将现有程序或模块迁移到 Python 3,推荐使用官方提供的 2to3 工具。对于全面学习 Python 3 语言(涵盖 3.0 和 3.1 版本,以及超出此文档范围的更多内容),可以参考 Mark Summerfield 的《Programming in Python 3》第二版。" 在 Python 2 到 Python 3 的迁移过程中,主要的改变包括: 1. **字符串和字符串格式化**: - 在 Python 3 中,所有字符串都是 Unicode 字符串,不再需要 `unicode()` 函数。Python 2 中的 `unicode(x)` 在 Python 3 中应改为 `str(x)`。 - Unicode 转义序列也有所变化:Python 2 中的 `u"\u20AC"` 在 Python 3 中直接写作 `"€"`。 - 原始字符串(raw string)的表示方法也略有调整:Python 2 中的 `ur"\w"` 变为 Python 3 中的 `r"\w"`。 2. **字符串的 % 操作符被弃用**: - Python 3 引入了更灵活的 `str.format()` 方法来替代 `%` 运算符进行字符串格式化。例如: - Python 2 中的 `"{}{}".format(i, s)` 和 `"{0}{1}".format(i, s)` 相当于 `%d%s` 或 `%s%d`。 - Python 3 中的 `"{}[i]{}[s]".format({'i': i, 's': s})` 替代了 `"%d%d" % (i, s)`。 - 使用字典解包,`"{i}{s}".format(**{'i': i, 's': s})` 可以取代 `"%d%s" % (i, s)`。 这些变化是 Python 3 为了提供更好的Unicode支持和更现代的编程风格所做的改进。Python 2 中的一些习惯用法在 Python 3 中可能不适用,因此需要程序员进行相应的代码调整。2to3 工具可以帮助自动转换大部分代码,但可能无法处理所有情况,所以理解和掌握这些差异至关重要。同时,阅读官方文档和书籍如《Programming in Python 3》是深入学习和掌握 Python 3 的有效途径。