네임스페이스란?
네임스페이스란 프로그래밍 언어에서 특정한 객체를 이름에 따라 구분할 수 있는 공간을 의미한다.

my_string = "asdf"
my_integer = 12
my_list = [1,2,3]
my_list2 = my_list
위 예시에서는 my_string이 "asdf"객체를 가리키고 있다.
위와 같이 이름과 객체를 연결한 것을네임스페이스 라고 한다.
왜 필요한데?
프로그래밍을 하다보면 모든 변수와 함수명을 겹치지 않도록 하는 것은 불가능 하다.
그렇기 때문에 특정한 이름의 변수 혹은 함수가 통용될 수 있는 범위를 제한하기 위해 네임스페이스가 등장한 것이다.
아래의 코드를 보자
class TestA:
a = 1
class TestB:
a = 2
a라는 변수이름이 중복되어 사용되고 있다. 만약 네임스페이스라는 개념이 없다면 원하는 a를 호출하기 힘들 것이다.
TestA 라는 로컬 네임스페이스에서 a를 호출하면 1의 값을 가진 변수 a를 얻을 수 있고,
TestB 라는 로컬 네임스페이스에서 a를 호출하면 2의 값을 가진 변수 a를 얻을 수 있게 된다.
Local, Global, Built-in Namespace
앞서 말했듯이 네임스페이스는 변수 혹은 함수가 통용될 수 있는 범위를 제한하기 위해 등장했다.
이런 네임스페이스는 Local, Global, Built-in 3가지로 분류할 수 있다.

Build-in
기존 내장 함수 들의 이름이 소속된다. 파이썬으로 작성 된 모든 범위가 포함된다.Global
모듈별로 존재하며, 모듈 전체에서 통용될 수 있는 이름들이 소속된다.Local
함수 및 메서드 별로 존재하며, 함수 내의 지역 변수들의 이름들이 소속된다.
'Python' 카테고리의 다른 글
| [Python] unittest 모든 테스트 코드 실행하기 (0) | 2021.05.29 |
|---|---|
| [Django] Django duplicate app name "auth" (0) | 2021.05.22 |
| [Django ] Django TypeError: send_mail() missing 1 required positional argument: 'from_email' (0) | 2021.05.22 |
| [Python] 메타클래스(metaclass) 란? (0) | 2021.05.11 |
| [객체 지향] Python 1급 객체란? (0) | 2021.05.09 |