스택큐힙리스트

NameError: Python 3에서 전역 이름 'xrange'이(가) 정의되지 않았습니다. 본문

카테고리 없음

NameError: Python 3에서 전역 이름 'xrange'이(가) 정의되지 않았습니다.

스택큐힙리스트 2023. 4. 15. 16:35
반응형

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

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

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

파이썬 2로 게임을 실행하십시오. 아는 것이 없다면 이식하지 마십시오. 대부분의 경우, #$ @ &! $$ * $ & 대 $_ *# 외에도 더 많은 문제가 발생할 가능성이 높습니다.

기록으로, 보고 있는 것은 구문 오류가 아니라 런타임 예외입니다.

당신이 무엇을 하고 있는지 알고 있으며, Python 2 코드 베이스를 Python 3와 호환 가능하게 만들고 있다면, 코드를 연결하여 모듈에 전역 이름을 별칭으로 추가함으로써 코드를 가교할 수 있습니다. (Python 2 코드 베이스에서 사용되는 기존 range()을 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 구문을 사용하는 것이 더 쉽기 때문입니다.

답변 2

제목: 파이썬 3에서 xrange가 정의되지 않은 글로벌 이름 오류(NameError)

파이썬은 간편하고 쉽게 배울 수 있는 프로그래밍 언어로 다양한 어플리케이션 개발에 사용됩니다. 그러나 파이썬 3에서는 이전 버전과는 달리 몇 가지 차이점이 있습니다. 그 중 하나는 xrange가 없어진 것입니다. 대신에 파이썬 3에서는 range 함수를 사용합니다.

하지만 기존 파이썬 코드를 그대로 사용하다 보면, NameError: global name 'xrange' is not defined 오류가 발생할 수 있습니다. 이 오류는 파이썬 3에서 xrange 함수가 없다는 것을 의미합니다. 따라서 기존 코드를 수정해야 합니다.

그렇다면 파이썬 3에서 range 함수와 xrange 함수의 차이점은 무엇일까요? range 함수는 시퀀스를 만들어줍니다. 예를 들어, range(5)는 0부터 4까지의 정수 시퀀스를 반환합니다. xrange 함수도 시퀀스를 만들어주지만, 이 함수는 파이썬 2에서만 사용되었습니다. 기존 코드에서 xrange를 사용하지 않고 range를 사용하면, 파이썬 3에서도 코드가 정상적으로 작동할 수 있습니다.

또 다른 방법은 사용하는 IDE나 편집기에서 파이썬 버전을 변경하는 것입니다. 하지만 이 방법은 모든 코드에서 동일하게 작동하지 않을 수 있습니다.

따라서 파이썬 3에서는 기존 코드를 수정하거나 range 함수를 사용하는 것이 좋습니다. 또한 파이썬 3가 기존 버전과는 다르다는 점을 염두에 두고 프로그래밍을 해야 합니다.

이러한 수정 작업으로 인해 코드의 완성도가 떨어진다는 생각이 들 수 있지만, 파이썬 3는 이전 버전과는 달리 성능 향상과 다양한 새로운 기능을 제공합니다. 따라서 파이썬 3의 새로운 기능과 개선된 성능을 활용하는 것이 좋습니다.

끝으로, 파이썬 3에서는 xrange 함수가 없습니다. 따라서 기존 코드를 수정하거나 range 함수를 사용해야 하며, 파이썬 3의 새로운 기능과 성능을 활용하여 프로그래밍을 해야 합니다.

반응형
Comments