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