Python 3 兼容性模块#
注意
这完全复制自旧的 IPython wiki,目前正在开发中。本开发指南的许多信息已过时。
IPython.utils.py3compat
模块提供了一些函数,以方便为 Python 2 和 3 编写代码。我们还在安装过程中使用 2to3 来更改语法,以及 io.open()
函数,它本质上是 Python 3 中内置的 open 函数。
提供的名称有
PY3:在 Python 3 中为 True,在 Python 2 中为 False。
杂项#
input:在 Python 2 中指
raw_input
,在 Python 3 中指input
(需要,因为 2to3 只转换对 raw_input 的调用,而不转换对其他名称的赋值)。builtin_mod_name:你导入以获取内置模块的字符串名称(
__builtin__
–>builtins
)。isidentifier:检查字符串是否是有效的 Python 标识符。
open:Python 3 支持 unicode 的 open 函数的简单包装器。类似于
codecs.open
,但允许通用换行符。当前实现只支持最简单的用法。MethodType:Python 3 中的
types.MethodType
。只接受两个参数:函数,实例。Python 2 的 class 参数会自动填充。doctest_refactor_print:可以对字符串或函数调用(或用作装饰器)。在 Python 3 中,它将 doctests 中的 print 语句转换为 print() 调用。2to3 会对真正的 doctests 执行此操作,但我们还需要在其他几个地方使用它。它只是使用正则表达式,这对于当前情况来说已经足够了。
u_format:如果测试使用 unicode 字符串的 repr(),则应将其写为
'{u}"thestring"'
,并将其提供给此函数,该函数将为 Python 2 生成'u"thestring"'
,为 Python 3 生成'"thestring"'
。也可以用作装饰器,以处理 docstring。execfile:在 Python 3 中返回(因为它不再是内置函数),并在 Python 2 上升级以处理 Unicode 文件名。