일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코딩테스트
- 재귀함수가 뭔가요
- 우아한테크코스 2차
- github skyline
- 우아한 테크코스 2차 합격
- depends
- python all testcode
- python
- TypeError: 'property' object is not iterable
- AWS
- classproperty
- springboot 3.0.0
- S3
- 2차 코딩테스트
- AWS S3
- Spring
- github
- MySQL server on 'db' (115)
- docker-compose
- EC2
- 갓재석
- Django
- depends_on
- javascript
- 프로그래머스
- classmethod
- docker
- DB
- METACLASS
- OperationalError
Archives
hanbin.dev
[Python] namespace란 본문
네임스페이스란?
네임스페이스란 프로그래밍 언어에서 특정한 객체를 이름에 따라 구분할 수 있는 공간을 의미한다.
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] NotImplementedError: Don't know how to literal-quote value ~ (0) | 2022.07.27 |
---|---|
[Python] metaclass 란 (0) | 2022.06.06 |
TypeError: 'property' object is not iterable (0) | 2021.06.02 |
[Python] unittest 모든 테스트 코드 실행하기 (0) | 2021.05.29 |
[Python] 메타클래스(metaclass) 란? (0) | 2021.05.11 |