NameError: глобальное имя 'xrange' не определено в Python 3



Я получаю сообщение об ошибке при запуске программы python:



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


игра с здесь.



что вызывает эту ошибку?

1103   3  

3 ответов:

вы пытаетесь запустить кодовую базу Python 2 С Python 3. xrange() была переименована в range() в Python 3.

запустите игру с Python 2 вместо этого. Не пытайтесь портировать его, если вы не знаете, что делаете, скорее всего, будет больше проблем за пределами xrange() и range().

для записи то, что вы видите, это не синтаксическая ошибка, а исключение во время выполнения.


если вы знаете, что делаете и активно делаете Python 2 codebase совместимый с Python 3, Вы можете связать код, добавив глобальное имя в свой модуль в качестве псевдонима для range. (Примите во внимание, что вы мая обновить все существующие range() использовать в кодовой базе Python 2 с list(range(...)) чтобы убедиться, что вы все еще получаете объект списка в Python 3):

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(...) С `диапазон(...) в кодовой базе, а затем использовать другую прокладку, чтобы сделать синтаксис 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, когда это возможно.

добавить xrange=range в коде :) это работает для меня.

Я согласен с последним ответом.Но есть и другой способ решить эту проблему.Вы можете скачать пакет с именем future,например pip install future.И в вашем файле. py введите это "из прошлого.встроенный импорт xrange".Этот метод предназначен для ситуации, когда в вашем файле есть много xranges.

Comments

    Ничего не найдено.