NameError 수정: Python에서 변수가 정의되지 않음

Zeeshan Afridi 2023년6월21일
  1. 파이썬에서 변수의 범위
  2. Python의 NameError
  3. Python에서 NameError: Variable is not defined 수정
NameError 수정: Python에서 변수가 정의되지 않음

이 기사에서는 Python에서 NameError의 원인과 특정 오류 NameError: 변수가 정의되지 않음을 수정하는 방법에 대해 설명합니다.

파이썬에서 변수의 범위

변수 범위는 특정 블록 외부에서 액세스할 수 있는지 여부에 관계없이 변수에 대한 접근성 제약 조건을 구현합니다. 일부 변수의 수명은 특정 블록 내에 있지만 다른 변수는 프로그램 전체에서 액세스할 수 있습니다.

예를 통해 이해해 보겠습니다.

# global scope
a = 3

# Function to add two numbers


def displayScope():

    # local varaible
    b = 2
    # sum a and b
    c = a + b

    print("The sum of a & b = ", c)


displayScope()

출력:

The sum of a & b =  5

이 예에서 변수 a는 상단에 정의되어 있으며 어떤 블록에도 포함되어 있지 않으므로 프로그램 전체에서 액세스할 수 있습니다. 그러나 변수 b는 기능 블록 내부에서 로컬로 정의됩니다. 따라서 블록 외부에서는 액세스할 수 없습니다.

Python의 NameError

Python에서 NameError는 변수, 라이브러리, 함수 또는 선언이 없는 코드의 유형인 작은따옴표나 큰따옴표가 없는 문자열을 실행하는 동안 런타임에 발생합니다. 둘째, 범위가 로컬이고 전역적으로 액세스할 수 없는 함수나 변수를 호출하면 Python 인터프리터는 NameError를 발생시키고 name 'name'이 정의되지 않았습니다라고 말합니다.

파이썬에서 NameError의 원인

NameError의 원인은 유효하지 않은 함수, 변수 또는 라이브러리에 대한 호출입니다. 이유를 명확하게 이해하기 위해 예를 들어 보겠습니다.

# invalid funciton call
def test_ftn():
    return "Test function"


print(test_ft())  # calling the the function which does not exist

# printing invalid varaible
name = "Zeeshan Afridi"
print(Name)  # printing variable `Name` which does not exist

두 가지 모두 Python에서 NameError의 원인입니다. 첫 번째 예제에서 사용할 수 없는 함수를 호출했기 때문입니다. 함수 이름은 test_ftn이고 우리는 test_ft 함수를 호출합니다.

두 번째 예에서 name 변수는 Zeeshan Afridi 문자열에 할당되지만 프로그램에서 선언되지 않은 Name을 출력합니다. 이것이 우리가 NameError: name 'test_ft'가 정의되지 않음을 얻은 이유입니다.

Python에서 NameError: Variable is not defined 수정

위의 예에서 범위를 벗어난 변수를 호출했기 때문에 NameError가 발생했습니다. 이 NameError: 변수가 정의되지 않음을 수정하는 방법을 살펴보겠습니다.

# global scope
a = 3

# Function to add two numbers


def displayScope():

    # local varaible
    b = 2


print("The value of a = ", a)
print("The value of b = ", b)

출력:

The value of a =  3
NameError: name 'b' is not defined

위의 코드는 프로그램 전체에서 액세스할 수 있기 때문에 a의 값을 표시했습니다. 반면에 변수 b는 로컬로 정의되므로 displayScope() 함수에만 알려집니다. 범위 밖에서 액세스할 수 없습니다.

이로 인해 NameError: name 'b'가 정의되지 않음 오류가 발생했습니다.

다행히 Python은 이 문제를 해결하기 위해 global 예약 키워드를 도입했습니다. 이 global 예약 키워드는 로컬 변수의 범위를 늘리는 데 사용되므로 프로그램 전체에서 전역적으로 변수에 액세스할 수 있습니다.

예를 통해 이해해 봅시다.

# global scope
a = 3

# Function to add two numbers


def displayScope():

    # local scope
    global c
    z = 2
    c = a + b


print("The value of c =", c)

출력:

The value of c = 5

이 예에서 변수 cdisplayScope()의 로컬 범위 내에서 정의되지만 매직 키워드 global로 인해 전역적으로 액세스할 수 있습니다. 이제 cglobal로 정의되기 때문에 전체에서 액세스할 수 있습니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

관련 문장 - Python Error