NameError: グローバル名 'xrange' は Python 3 で定義されていません 質問する

NameError: グローバル名 'xrange' は Python 3 で定義されていません 質問する

Python プログラムを実行するとエラーが発生します:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 110, in <module>
  File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 27, in __init__
  File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\class\inventory.py", line 17, in __init__
builtins.NameError: global name 'xrange' is not defined

このゲームはここ

このエラーの原因は何ですか?

ベストアンサー1

Python 3 で Python 2 コードベースを実行しようとしています。xrange()に改名されましたrange()Python 3 の場合。

代わりに、Python 2 でゲームを実行してください。何をしているのかわからない場合は移植を試みないでください。おそらく、それ以上の問題が発生するでしょうxrange()range()

ちなみに、表示されているのは構文エラーではなく、ランタイム例外です。


自分が何をしているのかわかっていて、Python 2 コードベースを Python 3 と互換性のあるものに積極的にしている場合は、 のエイリアスとしてグローバル名をモジュールに追加することで、コードをブリッジできます。(Python 3 でもリスト オブジェクトを取得できるようにするには、Python 2 コードベースで既存の使用をで更新する必要がある場合があるrangeことに留意してください)。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(...)から、別の shim を使用して Python 3 構文を Python 2 と互換性のあるものにします。

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 構文を使用する方が簡単です。

おすすめ記事