모듈은 함수나 변수, 클래스를 모아 놓은 파일이라고 할 수 있다.
같은 폴더내에 사용할 모듈을 넣는다. 그리고 다른 파일에서 import 모듈명(확장자x)를 사용해서 가져온다.
모듈에서 쓰고싶은 함수만 가져올 수도 있다.
import할 모듈에서 print명령어를 사용해서 출력을 해놓으면, 모듈을 불러오는 파일에서도 같이 실행이 된다.
이러한 문제를 방지하기 위해 사용하는 것이다. name 에는 모듈 이름이 저장된다.
if name == "main"를 사용하면 직접 이 파일을 실행했을때 참이되면 if문 다음 문장이 수행된다.
따라서 모듈에서 이 문장을 사용해놓으면 불러오는 파일에서는 실행이 되지 않는다.
이 조건식으로 if문을 사용하면 모듈로 사용될 때와 메인으로 실행될 때를 구분하여 작성할 수도 있다.
즉 현재 파일이 메인으로 사용될건지, 모듈로 import되어 사용되는지 구분을 하기 위해서 사용한다.
패키지는 모듈을 모아놓은 집합체라고 할 수 있다.
패키지는 모듈들의 컨테이너로서 패키지 안에는 또다른 서브 패키지를 포함할 수도 있다. 파일시스템으로 비유하면 패키지는 일반적으로 디렉토리에 해당하고, 모듈은 디렉토리 안의 파일에 해당한다.
패키지 안에 있는 모듈을 import 하여 사용하기 위해서는 일반 모듈처럼 import문 혹은 from import 문을 사용한다.
패키지에는 init.py 라는 파일이 있는데, 이 파일은 기본적으로 그 폴더가 패키지임을 표시하기 위해 사용될 뿐만 아니라, 패키지를 초기화하는 파이썬 코드를 넣을 수 있다. 버젼 3.3 이상에서는 이 파일이 없어도 패키지로 사용할 수 있지만, 호환성을 위해 만들어 놓자.
그리고 패키지는 다른 것들과 달리 import 를 통해 전체를 가져오는게 불가능하다.
init.py파일에서 all = [''] 를 해줘야 사용이 가능.
파일을 close를 따로 안해줘도 되서 편하게 쓸 수 있다.