7

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

在 importdivisionprint_functionfrom之后__future__,我唯一担心的是我range在 Python 2 中返回了一个完整的数组,浪费了时间和内存。

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

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

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

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

4

1 回答 1

13

你可以稍微简化一下:

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

我会反过来做:

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

如果您想放弃对 Python 2.x 的支持,您可以直接删除这两行,而无需查看所有代码。

但是,我强烈建议考虑sixlibrary。它是实现 Python 2 和 3 兼容性的事实标准。

from six.moves import range
于 2016-06-15T11:49:00.390 回答