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
'AI > AI 지식' 카테고리의 다른 글
[Python] *args, **kwargs 는 무엇이며, 왜 사용하는가? (0) | 2022.09.02 |
---|---|
[Statistics/Math] “likelihood”와 “probability”의 차이는 무엇일까요? (0) | 2022.08.23 |
[Deep Learning] 오버피팅일 경우 어떻게 대처해야 할까요? (0) | 2022.08.23 |
[Machine Learning] Markov Chain을 고등학생에게 설명하려면 어떤 방식이 제일 좋을까요? (0) | 2022.08.23 |
[Machine Learning] 앙상블 보팅/배깅/부스팅/스태킹 정리 (0) | 2022.08.15 |