如何在 Python 3 中启用 xrange 以实现可移植性?

How can I enable xrange in Python 3 for portability?

我写了一个脚本,我想为 Python 2 和 Python 3 启用。

__future__ 导入 divisionprint_function 后,我唯一担心的是 range returns Python 中的整个数组2、浪费时间和记忆。

我在脚本的开头添加了以下 3 行,作为解决方法:

if sys.version_info[0] == 3:
    def xrange(i):
        return range(i)

然后,我在代码中只使用了xrange

有没有比我的解决方法更优雅的方法?

你可以稍微简化一下:

if sys.version_info[0] == 3:
    xrange = range

我会反过来做:

if sys.version_info[0] == 2:
    range = xrange

如果您想放弃 Python 2.x 支持,您只需删除这两行即可,而无需检查所有代码。

不过,我强烈建议考虑six library。它是实现 Python 2 和 3 兼容性的实际标准。

from six.moves import range