Один из моих классов требует выполнения заданий на 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 это будет использовать безумное количество памяти.