Próbujesz uruchomić bazę kodu Python 2 z Python 3. xrange()
Nazwa została zmieniona na range()
w Python 3.
Zamiast tego uruchom grę z Python 2. Nie próbuj do portu, chyba że wiesz co robisz, najprawdopodobniej nie będzie więcej problemów poza xrange()
vs.range()
.
Dla przypomnienia, to, co widzisz, nie jest błędem składniowym, ale wyjątkiem środowiska wykonawczego.
Jeśli wiesz, co robisz i aktywnie dostosowujesz bazę kodu Python 2 do Python 3, możesz zmostkować kod, dodając globalną nazwę do modułu jako alias range
. (Weź pod uwagę, że być może będziesz musiał zaktualizować wszelkie istniejące range()
użycie w bazie kodu Python 2, list(range(...))
aby upewnić się, że nadal otrzymujesz obiekt listy w Python 3):
try:
# Python 2
xrange
except NameError:
# Python 3, xrange is now named range
xrange = range
# Python 2 code that uses xrange(...) unchanged, and any
# range(...) replaced with list(range(...))
lub wymienić wszystkie zastosowania xrange(...)
ze range(...)
w kodzie, a następnie użyć innego podkładkę aby składnia Python 3 jest kompatybilny z Pythonie 2:
try:
# Python 2 forward compatibility
range = xrange
except NameError:
pass
# Python 2 code transformed from range(...) -> list(range(...)) and
# xrange(...) -> range(...).
Ten ostatni jest preferowany w przypadku baz kodowych, które chcą dążyć do zgodności z Python 3 tylko na dłuższą metę, łatwiej jest po prostu użyć składni Python 3, gdy tylko jest to możliwe.