Programing

NameError: 글로벌 이름 'xrange'가 Python 3에 정의되지 않음

c10106 2022. 3. 24. 20:41
반응형

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

경기는 여기서부터입니다.

무엇이 이 오류를 발생시키는가?

Python 3으로 Python 2 코드베이스를 실행하려고 합니다. Python 3에서 이름이 변경되었습니다.

대신 파이선 2로 게임을 실행하십시오.당신이 무엇을 하고 있는지 모르는 한 그것을 포팅하려고 하지 마라, 아마도 그 이상의 문제가 있을 것이다.xrange()range().

레코드의 경우, 현재 표시되는 것은 구문 오류가 아니라 런타임 예외일 수 있다.


만약 당신이 당신이 무엇을 하고 있는지 알고 있고 파이톤 3과 호환되는 파이톤 2 코드베이스를 적극적으로 만들고 있다면, 당신은 당신의 모듈에 글로벌 이름을 의 별칭으로 추가하여 코드를 브리지할 수 있다.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(...)와 함께range(...)코드베이스에서 다른 심을 사용하여 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당신의 암호로 :) 그것은 내게 효과가 있다.

나는 이 수입을 추가하여 문제를 해결했다.
추가 정보

from past.builtins import xrange

python 2.x에서 xrange는 제너레이터를 반환하는 데 사용되는 반면 range는 목록을 반환하는 데 사용된다.python 3.x에서는 xrange가 제거되었고 range는 python 2.x의 xrange와 마찬가지로 생성기를 반환한다.따라서 python 3.x에서는 xrange보다는 range를 사용해야 한다.

대체하다

파이톤 2xrange

파이톤 3range

모두 똑같이 쉬어라.

나는 마지막 대답에 동의한다.그러나 이 문제를 해결할 다른 방법이 있다.pip install future와 같이 future라는 이름의 패키지를 다운로드할 수 있다.그리고 당신의 .py 파일에 이 "과거로부터"를 입력한다.builtins 가져오기 xrange".이 방법은 당신의 파일에 많은 xrange가 있는 상황을 위한 것이다.

참조URL: https://stackoverflow.com/questions/17192158/nameerror-global-name-xrange-is-not-defined-in-python-3

반응형