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.
dodaj
xrange=range
swój kod :) Działa to dla mnie.źródło
Rozwiązałem problem, dodając ten import
Więcej informacji
źródło
w python 2.x, xrange jest używany do zwracania generatora, podczas gdy zakres jest używany do zwracania listy. W python 3.x xrange został usunięty, a zakres zwraca generator tak jak xrange w python 2.x. Dlatego w Pythonie 3.x należy użyć zakresu zamiast xrange.
źródło
Zastąpić
Python 2
xrange
toPython 3
range
Spoczywajcie wszyscy sami.
źródło
Zgadzam się z ostatnią odpowiedzią. Ale istnieje inny sposób rozwiązania tego problemu. Możesz pobrać pakiet o nazwie future, na przykład pip install future. A w pliku .py wpisz: „from past.builtins import xrange” .Ta metoda dotyczy sytuacji, w której plik zawiera wiele xrang.
źródło
past.builtings.range
stanowi, jest po prostuxrange
odniesieniemrange
. Jest to pomocne podczas tworzenia bazy kodu poliglotycznego Python 2/3, ale nie nadaje się do istniejącego projektu zaprojektowanego do pracy tylko na Python 2.