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

时间:2016-06-15 11:38:20

标签: python python-3.x xrange

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

division导入print_function__future__之后,我唯一关心的是我的range在Python 2中返回一个完整的数组,浪费时间和内存。

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

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

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

是否有更优雅的方式来做而不是我的解决方法?

1 个答案:

答案 0 :(得分:11)

您可以稍微简化一下:

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