我编写了一个脚本,我想为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
。
是否有更优雅的方式来做而不是我的解决方法?
答案 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