ㅁㄴㅇㄻㄴㅇㄹ

[Python] namespace란 본문

Python

[Python] namespace란

hanbin8269 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
    함수 및 메서드 별로 존재하며, 함수 내의 지역 변수들의 이름들이 소속된다.