개발/Python

[파이썬] NameError: global name 'xrange' is not defined

MinorMan 2023. 1. 20. 13:08
반응형

<질문>

Python 프로그램을 실행할 때 오류가 발생합니다.

Traceback (most recent call last):
  File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 110, in 
  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

게임은here.

이 오류의 원인은 무엇입니까?


<답변1>

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

대신 Python 2로 게임을 실행하십시오. 당신이 무엇을 하고 있는지 알지 못한다면 포팅을 시도하지 마세요.xrange()range().

참고로 지금 보고 있는 것은 구문 오류가 아니라 런타임 예외입니다.

수행 중인 작업을 알고 Python 3과 호환되는 Python 2 코드베이스를 적극적으로 만들고 있는 경우 전역 이름을 모듈에 대한 별칭으로 추가하여 코드를 연결할 수 있습니다.range. (당신이5월기존 업데이트를 해야 합니다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(...)코드베이스에서 다른 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 구문을 사용하는 것이 더 쉽습니다.


<답변2>

추가하다xrange=range귀하의 코드에서 :) 그것은 나에게 작동합니다.


<답변3>

이 가져오기를 추가하여 문제를 해결했습니다.
info

from past.builtins import xrange

<답변4>

파이썬 2.x에서,엑스레인지동안 발전기를 반환하는 데 사용됩니다.범위목록을 반환하는 데 사용됩니다. 파이썬 3.x에서,엑스레인지제거되었으며범위다음과 같이 생성기를 반환합니다.엑스레인지파이썬 2.x에서. 따라서 Python 3.x에서는 xrange가 아닌 범위를 사용해야 합니다.


<답변5>

바꾸다

파이썬 2xrange에게

파이썬 3range

모두 똑같이 쉬십시오.


<답변6>

마지막 답변에 동의합니다. 하지만 이 문제를 해결할 수 있는 다른 방법이 있습니다. pip install future와 같은 future라는 패키지를 다운로드할 수 있습니다. 그리고 .py 파일에 "from past.builtins import xrange"를 입력합니다. 이 방법은 파일에 많은 xrange가 있는 상황입니다.

반응형