Supporting Python 3(支持Python 3) 关于本书 关于术语 序 欢迎来到Python 3 是时候了吗? 如果我现在不能切换会怎么样? Python 和它的版本 更多资源 迁移策略 仅支持Python 3 Python 2和Python 3的单独分支 使用2to3转换到Python 3 使用Distribute来支持2to3转换 无需转换支持Python 2 和 Python 3 使用3to2 哪种策略适合你? 应用 Python模块和包 框架 结论 为Python3作准备 在Python 2.7下运行 当除以整数时用//代替/ 使用新式的类 单独的二进制数据和字符串 当排序时,使用key来代替cmp 使用丰富的比较运算符 相对棘手的 实现 __hash__() 确保你没有用任何一个被移除的模块 测试覆盖率和tox 可选:在字典中使用迭代器方法(iterator-methods) 2to3 使用2to3 明确的固定器(fixers) 分发包 在安装时执行2to3 使用Distribute支持多个版本的Python 使用Distribute运行测试 使用Distribute运行2to3 常见的迁移问题 不正确的引入(import) 相对引入问题 Unorderable类型、__cmp__和cmp 排序 排序Unicode 字节、字符串及Unicode 字节文字 在Python 2和Python 3中的二进制数据 更好的解决办法 操作二进制数据 从文件中读取 取代UserDict CSV API 的变化 执行文档测试 write()返回一个值 类形(Types)现在是类(classes) 处理预期的异常 字符表达 dict 和set的顺序 使用现代风格改善你的代码 使用 sorted() 来替代 .sort() 使用上下文管理器来编写代码 高级字符串格式化 类修饰器 集合 yield 和 生成器 更多的推导式 新的模块 abc multiprocessing 和 future numbers 和 fractions 不使用2to3转换支持Python 2和Python 3 支持print()函数 处理异常 导入错误 整数不兼容 更多的字节、字符串和Unicode 二乘三是”six(六)“ 迁移C扩展 在你开始前 对像初始化 模块初始化 在Python中的变化 Strings 和 Unicode 使用你自己的固定器扩展2to3 什么时候固定器是必须的 Parse Tree(解析树) 创建一个固定器 修改解析树 使用Patterns找到节点 语言区别和暂时解决方法 apply() buffer() callable() Classes Comparisons coerce() and __coerce__ 字典方法 except Exception对象 exec execfile file filter() Imports 缩进 input()和raw_input() 整数相除 long map() 元类 .next() 参数解包 print raise range()和xrange() repr()当作反撇号 凑整行为 切片操作方法 排序 StandardError 字符串类型 重组和重命名 标准库 urllib、urllib2和urlparse 移除的模块 被移动的内置函数 string模块调动 函数及方法属性的重命名 来源:oschina链接:https://my.oschina.net/u/2288842/blog/508412 标签 python3 python 移植 兼容 翻译