移植代码到Python3
-介绍
-迁移策略
-运行时警告
-向前特性
-2to3源码转换器
介绍
-不止一种方法来完成
-移植C扩展是另一个怪物
迁移策略
1.改进你的测试套件
2.移植代码到Python2.6
3.开放Python3的警告
4.修复所有的警告
5.改造你的代码
6.运行2to3
代码改造
-缩小语义差距
-减少2to3的工作量
-例子:
-使用dict.iterkeys(), xrange()等
-避免str和unicode的隐式转换
-使用__getitem__替换__getslice__
运行时警告
python2.6 -3 scriptname.py
-警告Python3中移除了的特性
-警告2to3不能自动处理的改变
向前特性
Python3的许多特性在Python2.6中有效
-新的I/O库
-Unicode和bytes
-未来的内嵌函数
-捕获和抛出异常的新语法
-新ast模块,高级字符串格式,丰富的比较等
2to3源码转换器
-转换文件或目录
-产生一个相异格式的补丁
2to3 project/ > python3.patch
-也可以修复doctests
2to3 -d tests.py
-修复器可以单独运行
局限性
-只能处理语法转换——也就是说没有类型推断
-不能修复下面这些:
将近的改变
-%型的格式可能将弃用
-性能改善
-新importlib模块
总结
-Python3有许多新特性
-有许多工具辅助转换
-发送bug报告到http://bugs.python.org/
-订阅pythonporting邮件列表以获取更多帮助
(完)