Sie versuchen, eine Python 2-Codebasis mit Python 3 auszuführen. xrange()
wurde in Python 3 in range()
umbenannt.
Führen Sie das Spiel stattdessen mit Python 2 aus. Versuchen Sie es nicht zu portieren, es sei denn, Sie wissen, was Sie tun. höchstwahrscheinlich werden mehr Probleme auftreten als nur xrange()
vs. range()
.
Zur Information: Was Sie sehen, ist kein Syntaxfehler, sondern eine Laufzeitausnahme.
Wenn Sie wissen, was Sie tun, und aktiv eine Python 2-Codebasis mit Python 3 kompatibel machen, können Sie den Code überbrücken, indem Sie den globalen Namen als Alias für range
in Ihr Modul hinzufügen. (Beachten Sie, dass Sie unter Umständen jede vorhandene Verwendung von range()
in der Python 2-Codebasis mit list(range(...))
aktualisieren müssen, um sicherzustellen, dass Sie immer noch ein Listenobjekt in Python 3 erhalten):
try:
# Python 2
xrange
except NameError:
# Python 3, xrange heißt jetzt range
xrange = range
# Python 2-Code, der xrange(...) verwendet, unverändert, und alle
# range(...) werden durch list(range(...)) ersetzt
oder ersetzen Sie alle Verwendungen von xrange(...)
im Code durch range(...)
und verwenden Sie dann ein anderes Hilfsprogramm, um die Python 3-Syntax mit Python 2 kompatibel zu machen:
try:
# Vorwärtskompatibilität in Python 2
range = xrange
except NameError:
pass
# Python 2-Code, der von range(...) -> list(range(...)) und
# xrange(...) -> range(...) transformiert wurde
Letzteres ist vorzuziehen für Codebasen, die langfristig nur mit Python 3 kompatibel sein wollen, es ist einfacher, dann immer nur die Python 3-Syntax zu verwenden, wenn möglich.