Python
[Python] namespace란
hanbindev
2021. 5. 12. 18:06
네임스페이스란?
네임스페이스란 프로그래밍 언어에서 특정한 객체를 이름에 따라 구분할 수 있는 공간을 의미한다.
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
함수 및 메서드 별로 존재하며, 함수 내의 지역 변수들의 이름들이 소속된다.