728x90

namespace란 특정한 객체(Object)를 이름(Name)에 따라 구분할 수 있는 범위를 뜻한다. namespace가 다르면 같은 변수명을 각기 다르게 독립적으로 사용할 수 있으나, 그렇지 않은 경우는 같은 변수로 인식되므로 유의해야 힌다. 외부에 있는 변수를 변경하고 싶다면 global 또는 nonlocal 키워드를 사용해야 한다.

 

파이썬의 네임스페이스는 3가지로 분류할 수 있다:

  • 전역 네임스페이스: 모듈별로 존재하며, 모듈 전체에서 통용될 수 있는 이름들이 소속된다.
  • 지역 네임스페이스: 함수 및 메서드 별로 존재하며, 함수 내의 지역 변수들의 이름들이 소속된다.
  • 빌트인 네임스페이스: 기본 내장 함수 및 기본 예외들의 이름들이 소속된다. 파이썬으로 작성된 모든 코드 범위가 포함된다.

 

파이썬의 네임스페이스는 다음과 같은 특징들을 가지고 있다.

  • 네임스페이스는 딕셔너리 형태로 구현된다.
  • 모든 이름 자체는 문자열로 되어있고 각각은 해당 네임스페이스의 범위에서 실제 객체를 가리킨다.
  • 이름과 실제 객체 사이의 매핑은 가변적(Mutable)이므로 런타임동안 새로운 이름이 추가될 수 있다.
  • 다만, 빌트인 네임스페이스는 함부로 추가하거나 삭제할 수 없다.

 

프로그래밍을 하는 도중에는 어떤 경우에도 다음과 같은 중첩된 변수 스코프를 확인할 수 있다:

  • 지역 이름들을 포함하는 현재 함수의 스코프(지역 네임스페이스)
  • 전역 이름들을 포함하는 현재 모듈의 스코프(전역 네임스페이스)
  • 빌트인 이름들을 포함하는 최외곽의 스코프(빌트인 네임스페이스)

 


참고

https://hcnoh.github.io/2019-01-30-python-namespace

 

[Python] 네임스페이스 개념 정리

이번 포스팅은 다음의 링크들을 참고하여 작성하였다: 링크1 링크2 링크3 링크4

hcnoh.github.io

 

728x90