파이썬은 모듈 혹은 모듈의 집합을 패키지 단위로 묶어서 관리할 수 있고 이는 소스 트리를 구축하는데 있어서 매우 유용한 기법이다

패키지는 도트(.)를 이용해서 파이썬 모듈을 계층적으로 관리할 수 있게 해준다


2.x 버전 및 그 하위의 레벨에서는 반드시 패키지 폴더 내부에 __init__.py 라는 파일이 존재하게 되는데, 이 파일은 해당 디렉토리가 패키지의 일부임을 알려주는 역할을 한다

만약 패키지에 포함된 디렉토리 중 __init__.py 파일이 없다면 패키지로 인식되지 않는다

3.x 이후의 버전에서는 __init__.py 가 없더라도 패키지로 인식이 가능하게 변경되었으나, 하위 버전 호환을 위해서 __init__.py 파일을 생성하는 것이 안전한 방법이다


__init__.py를 이용할 경우 해당 파일 내에 __all__ 변수를 설정해서 외부에서 import 가능한 모듈을 정의해주어야 한다.

그렇지 않으면 하위 버전에서는 import *를 하게 되더라도 해당 모듈을 사용하지 못하게 될 수도 있다

(하지만 from 의 마지막 항목이 모듈인 상태로 import *를 하게 되면 이에 상관없이 전부 사용이 가능하다. 여기서 안 된다고 하는건 패키지를 대상으로 import *를 하게 되는 경우를 말한다.) 


__all__ 변수는 다음과 같이 모듈의 이름을 담는 리스트로 구성되며 as를 이용해서 다른 변수명으로 치환해서 사용되곤 한다.

__all__ = [‘moduleA’, ‘moduleB’] as moduleAll



'Programming Language > Python' 카테고리의 다른 글

Python 의 Call by assignment 의 개념  (0) 2018.10.07
Python 2 버전과 3 버전의 차이  (0) 2018.08.04

+ Recent posts