我的一个类需要在Python中完成作业,作为练习,我一直在确保我的程序在Python 2和Python 3中都能正常工作,使用如下脚本:
#!/bin/bash
# Run some PyUnit tests
python2 test.py
python3 test.py
我一直在做的一件事就是制作 range
使用这段代码在两个版本中都一样:
import sys
# Backport Python 3's range to Python 2 so that this program will run
# identically in both versions.
if sys.version_info < (3, 0):
range = xrange
这是一个坏主意吗?
编辑:
原因是这样的 xrange
和 range
在Python 2和Python 3中以不同的方式工作,我希望我的代码在两者中都做同样的事情。我可以反过来做,但让Python 3像Python 2一样工作似乎很愚蠢,因为Python 3是“未来”。
这是一个为什么只是使用的例子 range
不够好:
for i in range(1000000000):
do_something_with(i)
我显然没有使用该列表,但在Python 2中,这将使用疯狂的内存量。