364

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

ゲームはここから。

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

4

6 に答える 6

708

Python 3 で Python 2 コードベースを実行しようとしています。 は Python 3xrange()で名前が変更されrange()ました。

代わりに Python 2 でゲームを実行してください。自分が何をしているのかを理解していない限り、移植しようとしないでくださいxrange()。vs . 以外にも問題が発生する可能性があります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(...)から、別の 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 構文を使用する方が簡単です。

于 2013-06-19T13:14:02.300 に答える