Python 3でPython 2コードベースを実行しようとしています。Python3でxrange()
に名前が変更されrange()
ました。
代わりにPython 2でゲームを実行してください。あなたは何をしているか知っている限り、最も可能性の高い超えて多くの問題があるだろう、ポートにそれをしようとしないでくださいxrange()
対range()
。
記録として、表示されているのは構文エラーではなく、ランタイム例外です。
あなたが何をしているのかがわかっていて、Python 2コードベースをPython 3と互換性があるように積極的に作成している場合は、グローバル名をモジュールのエイリアスとしてモジュールに追加することにより、コードをブリッジできますrange
。(Python 3でリストオブジェクトを確実に取得するために、Python 2コードベースの既存の使用を更新する必要がある場合があることを考慮してください):range()
list(range(...))
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(...))
またはのすべての使用を置き換えるxrange(...)
とrange(...)
コードベースで、その後のPython 2とPythonの3構文が互換性を持たせるために別のシムを使用します。
try:
# Python 2 forward compatibility
range = xrange
except NameError:
pass
# Python 2 code transformed from range(...) -> list(range(...)) and
# xrange(...) -> range(...).
後者は、長期的にのみ Python 3互換を目指したいコードベースに適しています。可能な限り、Python 3構文を使用する方が簡単です。