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
이 예에서 변수 c
는 displayScope()
의 로컬 범위 내에서 정의되지만 매직 키워드 global
로 인해 전역적으로 액세스할 수 있습니다. 이제 c
는 global
로 정의되기 때문에 전체에서 액세스할 수 있습니다.
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn관련 문장 - Python Error
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.