모듈 Module
- 변수나 함수 그리고 클래스 등을 모아놓은 파일
- 모듈로 따로 모아놓는 이유는
다른 파일에서 재사용이 가능하게 하고,
전체코드가 한 파일에 넣기에는 너무 커졌을때 여러 파일로 나누어서 정리를 하기 위해서 이다
- 모듈 만드는 방법은 단순히 파일을 만든후 그 안에 재사용 하고 싶은 함수나 클래스 혹은 변수등을 구현하면 된다
- from 모듈이름 import 함수/변수/클래스1, 함수/변수/클래스2...> (파이썬이 모듈을 해당 파일과 연결시킴)
- 주의할점: 임포트 할때 파일 확장자인 .py는 제외하고 사용해야 한다
- 임포트 한 후에는 모듈의 원하는 변수/ 함수 / 클래스를 사용할 수 있다
모듈이름.모듈에서 사용하고싶은 변수/함수/클래스 이름
- from..import..키워드를 사용하여 모듈을 불러들이는 경우 모듈 이름을 붙이지 않고 바로 원하는 함수/변수/클래스를 호출할 수 있다
- 서로 다른 모듈에서 동일한 이름의 함수가 있을 수 있어서 별명(as)을 사용한다
함수 별명 붙이기
from .. import .. as ..
모듈 별명 붙이기
import ... as ..
패키지 Packages
정의
- 모듈과 마찬가지로 다른 파일에서 불러와서 사용하는 개념이다
- 여러개 나눠져 있는 코드를 다른곳에서 하나의 모듈로 불러와서 사용할 수 있도록 해줌
- 일반 모듈처럼 import 하여 사용한다
차이점
- 모듈보다 더 크고 복잡한 코드라는 점
- 해당 패키지 모듈을 dot notation으로 사용한다
ex) import pkg.mod1
from .mod1 import func2
초기화
- __init__.py파일을 통해 패키지 초기설정을 한다
- 패키지 안에 __init__.py 파일이 있으면 패키지가 임폴트 될때 __init__.py파일의 코드들이 자동으로 실행된다
__init__.py 파일을 통해 할 수 있는것
- import 할때 경로의 총 길이 줄여주기
- package에서 import 할 수 있는 변수/함수/클래스 제한하기
-내부적으로만 사용되어야 할때 __all__변수를 지정하면 외부에서 임폴트 되어 사용되는것을 막음
-패키지를 통해 임폴트 될 수 있는 요소들은 모두 __all__변수를 통해 정의 됨
-__all__변수의 default값은 모든 함수/변수/클래스 이다
-__all__변수는 str값의 요소를 가지고 있는 list이다
(import되길 원하는 요소들을 str으로 list에 선언해야 함
)
- 그 외 package가 import 될때 꼭 먼저 실행되어야 하는 코드들
다른사람이 만든 package를 import하여 사용하기
- 먼저 package를 설치해야 한다
- pip라는 툴을 사용한다 (pip은 파이썬의 package manager)
- pip은 터미널에서 pip install Django 명령어를 사용
python이 module/package를 찾는방법
1. sys.modules
- 파이썬이 모듈이나 패키지를 찾기위해 가장 먼저 확인하는 곳
- sys.module은 단순한 dictionary이며 이미 import된 모듈과 패키지들을 저장하고 있다
- 한번 import된 모듈과 패키지들은 파이썬이 또 다시 찾지 않아도 되도록 하는 기능을 가지고 있다
- 그러므로, 새로 임폴트하는 모듈은 sys.modules에서 찾을수 없다
2. built-in modules
- 파이썬에서 제공하는 파이썬 공식 라이브러리들
- 이미 파이썬에 포함되어 나오므로 파이썬이 쉽게 찾을 수 있다
3. sys.path
- str으로 되어있는 list형
- 각 str요소들은 다음처럼 경로를 하나하나 확인하면서 해당경로에 임폴트 하고자 하는 패키지가 위치해 있는지 확인한다