Language/Python

모듈 & 패키지

공부좀하시졍 2021. 8. 11. 14:55

모듈: 코드를 작은 단위로 나눠서 저장해 놓은 파일

패키지: 모듈을 한 묶음으로 묶어 놓은 것


<name 특수변수>

__name__은 모듈의 이름이 저장된 변수이다.

파일을 직접 실행하면 __name__은 __main__이고 파일을 import 해서 사용하면 __name__은 모듈 이름으로 설정된다.

 

파일이 직접 실행될 때만 코드를 실행시키고 싶다면

if __name__ == '__main__' 이라는 조건문을 작성하면 된다.

 

main 함수를 사용하면 파일에서 프로그램을 작동시키는 코드의 위치를 쉽게 알 수 있기 때문에

코드의 가독서이 올라간다.

if __name__ == '__main__' 조건문을 사용해서 main함수를 호출해 준다.


패키지를 임포트 할 때에는 import package.module 또는 from package import module 또는 from package.module import member 방식을 사용한다. 패키지나 모듈 안에 있는 것은 . 을 이용하여 접근한다.

import package로 패키지 자체를 임포트 할 수 있지만 패키지 안에 있는 내용은 임포트 되지 않는다.

 

패키지 안에 __init__.py라는 파일이 있다. __init__.py 파일은 이 폴더가 파이썬 패키지 임을 알려준다.

패키지를 임포트하면 기본적으로 패키지 안에 있는 내용은 임포트되지 않지만 init파일을 활용하여 패키지 안에 있는 내용도 함께 임포트 할 수 있다.

 

from package import *를 하면 패키지 안에 있는 내용이 임포트 되지 않는다.

이때, __all__ 특수 변수를 사용한다.

__all__ 특수 변수는 import *를 했을 때 임포트 대상에서 어떤 것들을 가져와야 하는지 정해주는 변수이다.

__all__ = ['ex1', 'ex2'] 와 같이 사용한다. 패키지의 __all__은 패키지에 해당하는 init 파일에서 정의한다.