<Python> Namespace와 Scope
- Developer/Python
- 2023. 8. 9.
파이썬 네임스페이스 소개
파이썬의 네임스페이스(Namespace)은 변수와 함수, 클래스와 같은 객체의 이름을 저장하는 공간입니다. 파이썬에서 네임스페이스는 계층적으로 구성되어 있습니다. 또한, 네임스페이스는 프로그램의 실행 과정에서 동적으로 생성되거나 삭제됩니다.
파이썬 스코프 소개
스코프(Scope)는 프로그램에서 변수와 객체의 이름이 유효한 범위를 나타냅니다. 스코프는 프로그램 전체의 구조와 관련이 있습니다. 파이썬에서는 전역(Global) 스코프와 로컬(Local) 스코프, 빌트인(Built-in) 스코프와 같은 다양한 스코프 범위가 있습니다.
전역 스코프와 로컬 스코프
전역 스코프(Global Scope)는 프로그램 전체에서 유효한 네임스페이스입니다. 전역 변수가 저장되며, 모든 함수와 메소드에서 이 변수에 대한 참조와 수정이 가능합니다. 전역 스코프에 저장된 변수가 전역 변수입니다.
로컬 스코프는 함수, 메소드, 또는 클래스 내부에서 생성되는 객체의 이름을 저장하는 네임스페이스입니다. 함수나 메소드의 로컬 변수와 매개변수가 저장되며, 해당 함수 또는 메소드가 실행되는 동안만 유효합니다. 로컬 스코프에 저장된 변수나 객체를 로컬 변수라고 합니다.
빌트인 스코프
파이썬의 빌트인 스코프(Built-in Scope)는 파이썬 인터프리터가 실행되는 동안 유지되는 네임스페이스입니다. 파이썬에 내장된 함수, 예외 처리 클래스, 빌트인 객체의 이름이 저장됩니다.
스코프 규칙
파이썬은 변수를 참조하거나 수정하려고 시도할 때 스코프를 참조하는 순서에 따라 결과가 달라집니다. 이 순서를 정의하는 것이 LEGB 규칙입니다. LEGB는 Local, Enclosing, Global, Built-in의 약자로, 변수를 참조할 때 차례대로 로컬 스코프, 포함하는 함수 영역으로 검색하고 전역 스코프와 빌트인 스코프를 찾으며 검색합니다.
LEGB 규칙의 예
x = 10 # 전역 변수
def outer_function():
x = 20 # 외부 함수의 로컬 변수
def inner_function():
x = 30 # 내부 함수의 로컬 변수
print(x) # 출력: 30
inner_function()
print(x) # 출력: 20
outer_function()
print(x) # 출력: 10
global 키워드와 nonlocal 키워드
파이썬에서 global
키워드는 로컬 영역에서 전역 영역의 변수를 참조하거나 수정할 수 있도록 합니다.
x = 10 # 전역 변수
def change_global_x():
global x
x = 20
change_global_x()
print(x) # 출력: 20
nonlocal
키워드는 중첩된 함수 내부에서 바깥쪽 함수 영역의 변수를 참조하거나 수정할 수 있도록 합니다.
def outer_function():
x = 10 # 외부 함수의 로컬 변수
def inner_function():
nonlocal x
x = 20
inner_function()
print(x) # 출력: 20
outer_function()
이 글에서는 파이썬에서의 네임스페이스과 스코프에 대해서 알아보았습니다.
네임스페이스는 객체의 이름을 저장하는 공간이며, 스코프는 변수와 객체의 이름이 유효한 범위를 나타내는 개념입니다.
감사합니다.
'Developer > Python' 카테고리의 다른 글
<Python> 매직 메서드(Magic Method) 및 연산자 오버로딩 (0) | 2023.08.10 |
---|---|
<Python> 반복 가능한 객체(Iterable)와 생성자(Generator) (0) | 2023.08.09 |
<Python> 정적 메서드(staticmethod)와 클래스 메서드(classmethod) (0) | 2023.08.08 |
<Python> 프로퍼티(Property)와 데코레이터(Decorator) (0) | 2023.08.07 |
<Python> 상속 및 메서드 오버라이드 (0) | 2023.08.06 |