Sie versuchen , eine Python 2 Code - Basis mit Python ausführen 3. xrange()
umbenannt wurde range()
3 in Python.
Führen Sie das Spiel stattdessen mit Python 2 aus. Versuchen Sie nicht , zu portieren , wenn Sie wissen , was Sie tun, wahrscheinlich wird es mehr Probleme über sein xrange()
vs. range()
.
Für den Datensatz wird kein Syntaxfehler angezeigt, sondern eine Laufzeitausnahme.
Wenn Sie wissen, was Sie tun, und eine Python 2-Codebasis aktiv mit Python 3 kompatibel machen, können Sie den Code überbrücken, indem Sie Ihrem Modul den globalen Namen als Alias für hinzufügen range
. (Berücksichtigen Sie, dass Sie möglicherweise eine vorhandene range()
Verwendung in der Python 2-Codebasis mit aktualisieren müssen, um list(range(...))
sicherzustellen, dass Sie in Python 3 weiterhin ein Listenobjekt erhalten.)
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(...))
oder ersetzen Sie alle Verwendungen von xrange(...)
durch range(...)
in der Codebasis und verwenden Sie dann einen anderen Shim, um die Python 3-Syntax mit Python 2 kompatibel zu machen:
try:
# Python 2 forward compatibility
range = xrange
except NameError:
pass
# Python 2 code transformed from range(...) -> list(range(...)) and
# xrange(...) -> range(...).
Letzteres ist für Codebasen vorzuziehen, die nur auf lange Sicht Python 3-kompatibel sein möchten. Es ist einfacher, wenn möglich nur die Python 3-Syntax zu verwenden.