__init__.py
의 역할import
할때 경로의 총 길이를 줄여준다.import
할 수 있는 변수/함수/클래스 를 제한한다. import
될 때 꼭 먼저 실행되어야 하는 코드들을 관리한다.import pkg.mod1
pkg.mod1.func1()
이 코드에서 func1() 를 사용하기 위해 모든 경로를 다 적어줘야 한다. 하지만 다음을 보자.
# __init__.py
from .mod1 import func1
이렇게 __init__.py
에서 직접 func1 를 호출한다면
# main.py
from pkg import func1
func1()
main.py
에서 함수 이름으로 곧바로 호출할 수 있다.
__init__.py
의 __all__
변수를 통해 패키지 외부에서 import
할 수 있는 변수/함수/클래스 를 설정할 수 있다.__all__
변수 설정패키지에서 import
될 수 있는 요소들은 모두 __all__
변수를 통해 제어된다.
__all__
의 default 값은 패키지의 모든 변수/함수/클래스 이다. 즉 해당 변수를 건들지 않는 이상 모든 요소에 접근해서 import
할 수 있다.
import
되길 원하는 요소들을 아래와 같이 string
으로 list
에 선언해주면 된다.
# __init__.py
from .mod1 import func1
from .mod2 import func2
__all__ = ['func1', 'func2']
# main.py
from pkg import *
func1()
func2()
func10() # func10 함수는 __all__ 에서 정의되지 않았으므로 import 시 에러가 발생한다.