파이썬 웹어플리케이션을 들여다보면 __init__.py 이라는 네임의 파일을 매우 많이 발견할 수 있습니다. 아래는 이 파일의 역할은 무엇인지 알아보고자합니다.


# Python에서 __init__.py가 하는 일은?위 파일들은 하나의 경로에 하나의 파일로 존재합니다.예를들어 아래와 같이 존재합니다.


위 그림은 myApp.py라는 파일이 존재하고 경로 moduleA가 있는 경우를 나타냅니다. 이때 moduleA 안에는__init__.py파일이 존재하게됩니다.


# 패키지 모듈로서 사용하기 위한 목적

이들의 역할은 파일이 위치한 경로를 패키지 모듈처럼 사용할 수 있도록 해주는 매우 중요한 기능을 수행합니다. 쉽게 말하면 우리가 패키지의 모듈을 추가할때 사용하는 from, import를 이 경로에 사용할 수 있다는 점입니다. 만약 이런 기능이 없다면 모듈을 찾는 경로를 config에 설정해야만 사용할 수 있어 매우 번거롭죠. 만약 해당 경로에 위치한 파일 getName.py을 import하는 경우 아래처럼 쓸 수 있을 것입니다.

! myApp.py
from moduleA import getName



# 해당 경로에 공통 사용되는 기능 및 모듈 사용하기

위의 moduleA에 위치한 __init__.py에는 공통으로 적용 가능한 기능이나 모듈을 포함할 수 있습니다. 예를들어 해당 경로의 위치한 모든 python 파일들이 동일한 baseAll을 필요로하여 각각 아래처럼 선언된 경우 이를 이 곳에 위치시키면 한번만 선언함으로서 모두 같은 모듈을 사용하게됩니다.

! moduleA/a.py
import baseAll

! moduleA/b.py
import baseAll

각각 선언된 import를 삭제 후 __init__.py에 한번만 선언하여 사용하면 더 적은 코드를 사용할 수 있죠.

! moduleA/__init__.py
import baseAll

이제 해당 경로의 모든 파일들은 공통으로 baseAll을 사용할 수 있게됩니다.