如何以交叉兼容的方式使用重命名为3的python模块?

2024-09-21 00:37:42 发布

您现在位置:Python中文网/ 问答频道 /正文

这里有几个modules that were renamed in Python 3,我正在寻找一种解决方案,它可以使您的代码在两种python风格下工作。在

在Python3中,__builtin__被重命名为builtins。示例:

import __builtin__
#...
__builtin__.something # appearing multiple times ("something" may vary)

Tags: 代码inimportmodules示例that风格解决方案
2条回答

您可以使用嵌套的try .. except-块来解决这个问题:

try:
    name = __builtins__.name
except NameError:
    try:
        name = builtins.name
    except NameError:
        name = __buildins__.name
        # if this will fail, the exception will be raised

这不是真正的代码,只是一个示例,name将具有与您的版本无关的适当内容。在块内部,您还可以import newname as oldname或将值从新的全局builtins复制到旧的__buildin__

^{pr2}$

现在可以像以前的python版本一样使用__builtins__。在

希望有帮助!在

本杰明·彼得森的six可能就是你要找的。Six“提供了简单的实用程序来包装python2和python3之间的差异”。例如:

from six.moves import builtin  # works for both python 2 and 3

相关问题 更多 >

    热门问题