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 的类参数会自动填充。

  • doctest_refactor_print: 可以对字符串或函数调用(或用作装饰器)。在Python 3中,它将doctests中的print语句转换为print()调用。2to3为实际的doctests执行此操作,但我们在其他几个地方也需要它。它只是使用了一个正则表达式,这在当前情况下已经足够好了。

  • u_format:当测试使用unicode字符串的repr()时,应写成 '{u}"thestring"',并传递给此函数,该函数将为Python 2生成 'u"thestring"',为Python 3生成 '"thestring"'。也可以作为装饰器使用,以处理文档字符串。

  • execfile: 在 Python 3 中(不再是内置函数)返回,并在 Python 2 中升级以处理 Unicode 文件名。