Один из моих классов требует, чтобы задания выполнялись в Python, и в качестве упражнения я убедился, что мои программы работают как на Python 2, так и на Python 3, используя script следующим образом:
#!/bin/bash
# Run some PyUnit tests
python2 test.py
python3 test.py
Одна вещь, которую я делал, заключается в том, что range
работает одинаково в обеих версиях с этим фрагментом кода:
import sys
# Backport Python 3 range to Python 2 so that this program will run
# identically in both versions.
if sys.version_info < (3, 0):
range = xrange
Это плохая идея?
EDIT:
Причиной этого является то, что xrange
и range
работают по-разному в Python 2 и Python 3, и я хочу, чтобы мой код делал то же самое в обоих. Я мог бы сделать это наоборот, но сделать Python 3 похожим на Python 2, кажется глупым, поскольку Python 3 - это "будущее".
Вот пример того, почему просто использовать range
недостаточно хорошо:
for i in range(1000000000):
do_something_with(i)
Я, очевидно, не пользуюсь списком, но в Python 2 это будет использовать безумный объем памяти.