Python 2到Python 3迁移指南
需积分: 9 46 浏览量
更新于2024-09-09
1
收藏 668KB PDF 举报
"这篇文档是针对想要转向使用Python 3的Python 2程序员编写的,旨在列出不同版本间改变的对象和习惯用法,并演示如何从Python 2风格过渡到Python 3.1风格。它还介绍了Python 3.1的一些新特性。如果你打算转换现有的程序或模块,首先应该使用2to3工具。对于全面的Python 3语言介绍,可以参考Mark Summerfield的《Programming in Python 3》第二版。"
在Python 2到Python 3的迁移过程中,主要的知识点包括:
1. 字符串和字符串格式化:
- Python 3的字符串默认是Unicode编码,不再需要使用`unicode()`函数将其他类型转换为Unicode字符串。例如,Python 2中的`unicode(x)`在Python 3中应写为`str(x)`。
- Unicode字符串表示也有所改变,Python 2中的`u"\u20AC"`在Python 3中简化为`"\u20AC"`。
- 在Python 3中,原始字符串(raw string)的前缀从`ur`变为`r`,如`ur"\w"`在Python 3中写为`r"\w"`。
2. 字符串格式化操作 `%` 已被弃用,推荐使用 `str.format()` 方法。这是更现代且可读性更强的字符串格式化方法。例如:
- Python 2中的`"%d%s" % (i, s)` 在Python 3中应转换为`"{i}{s}".format(i=i, s=s)`,或者使用字典形式`"{0[i]}{0[s]}".format({'i': i, 's': s})`。
- 使用关键字参数时,Python 3可以使用`**`运算符,如`"{i}{s}".format(**{'i': i, 's': s})`,这比Python 2的`"%(i)d%(s)s" % {'i': i, 's': s}`更加灵活。
3. 除了上述更改,还有其他一些重要的Python 3特性:
- 函数返回值默认为None,而不是Python 2中的NoneType。
- print语句变为print()函数,如`print x`在Python 3中需要写为`print(x)`。
- 非本地化异常处理的语法改变,如`except Exception, e`在Python 3中应写为`except Exception as e`。
- range()函数在Python 3中返回的是一个迭代器,而不是列表。如需列表,可使用list(range())。
- 全新的字典和集合操作,如字典的`update()`方法现在返回None,而不是旧版本中的self引用。
- 异常类的继承结构改变,许多标准库的异常类都从Exception派生。
这些改动要求程序员在从Python 2迁移到Python 3时,不仅要更新代码,还需要理解新特性的背后逻辑,以充分利用Python 3的优势。为了确保平稳过渡,建议使用2to3工具自动转换代码,并进行详尽的测试以确保所有功能都能正常运行。同时,阅读官方文档和相关的书籍,如《Programming in Python 3》第二版,可以帮助深入理解Python 3的语法和最佳实践。
104 浏览量
287 浏览量
343 浏览量
2023-03-29 上传
363 浏览量
171 浏览量
348 浏览量
181 浏览量
2025-02-25 上传
158 浏览量

commando23
- 粉丝: 0
最新资源
- C#编程实现TTS语音朗读技术教程
- 三星ML-1660/1666打印机清零软件使用指南
- 入门Gatsby:构建高性能静态网站
- Python通讯录增删改查及排序功能实现
- SQL语句大全与PHP_APACHE_MYSQL及MSSQL配置经典教程
- 实现下拉多选树与标签生成功能的技术细节分享
- jQuery实现苹果IOS风格滑块焦点图特效
- 微软KB835221补丁解决声卡驱动安装问题
- 掌握LVGL:嵌入式GUI开发的示例教程与应用案例
- C语言入门教程:点亮第一盏LED灯的代码解析
- 探索u-ura-kay-t-sistemi-main中的JavaScript技术
- BC3.1软件安装步骤详解
- 深入理解嵌套片段技术
- spawn-async: 使用Promise管理child_process.spawn进程
- 自制遥控器实现与源代码详解
- 平治东方电话号码管理工具——海豚小助手