파이썬에서 모듈은 변수나 함수, 클래스 등을 모아놓은 파일이다.
그 이유는 두가지로 나눌 수 있다.
import <모듈 이름>
모듈이름을 적을 때 확장자인 .py
는 제외하고 작성한다.
<모듈 이름>.<함수,변수,클래스 이름>
my_module.my_list()
위와 같은 형태로 불러온다.
모듈이름을 앞에 붙여주는 이유는 파이썬이 어느 파일에서 검색할 지 알게해주기 위해서이다. 만약 해당 파일에서 함수명만 사용한다면 해당파일에서 검색하기 때문이다.
import <모듈 이름>
from <모듈 이름> import <변수/함수/클래스1 이름>, <변수/함수/클래스2 이름> ...
from <모듈 이름> import *
*
표시는 해당 모듈파일의 모든 변수,함수,클래스 즉 기능들을 불러온다.
하지만 이렇게 하는 것은 권장되지 않습니다.
왜냐하면 local scope를 가지고 있는 다른 변수/함수/클래스 들과 이름 충돌이 날 수 있는데, 만일 이름 충돌이 일어났을 경우 알기가 쉽지 않을수 있기 때문입니다.
from <모듈 이름> import <함수/변수/클래스1> as <원하는 이름>
as
뒤에 불러온 기능의 이름을 편의대로 바꿔서 사용할 수 있다.
import <모듈 이름> as <원하는 이름>
모듈이름도 사용자 정의가 가능하다.
Package
는 Module
과 마찬가지로 필요한 기능들을 모아놓은 파일입니다. 필요시 불러와서 사용한다는 점은 모듈과 똑같지만 모듈과 차이점은 모듈보다 더 크고 복잡한 코드입니다. 모듈들도 코드를 작성하고 기능을 만들다 보면 너무 커져 가독성이 떨어지는 파일이 될 수 있습니다. 그렇기 때문에 모듈도 사용자 임의대로 나눠서 저장합니다. 그 분산된 모듈들의 집합이 바로 패키지입니다.
쉽게 말해 패키지는 모듈이라는 파일을 모아놓는 디렉토리입니다.
import <패키지이름.모듈파일이름>
from <패키지이름.모듈파일이름> import <함수/변수/클래스 이름>
파이썬은 init.py 파일을 통해 package 초기 설정을 가능하게 해줍니다. Package 안에 init.py 파일이 있으면 package가 import 될때 init.py 파일의 코드들이 자동으로 실행됩니다.
__init__.py
의 기능- Import 할때 경로의 총 길이 줄여주기
- Package에서 import 할 수 있는 변수/함수/클래스 제한하기
- 그 외 package가 import될때 꼭 먼저 실행되어야 하는 코드들
import 할 때 경로의 총 길이 줄여주기
# __init__.py
from .mod1 import func2
# main.py
from pkg import func2
Package에서 import 할 수 있는 변수/함수/클래스 제한하기
__init.py__
파일을 사용해서 import
할 수 있는 변수/함수/클래스를 제한할 수 있습니다.예를 들어 모듈의 모든 함수가 다 외부로 노출될 수 있는건 아닐수 있습니다. 내부적으로만 사용되어야 하는 함수도 있을수 있는데요, 이러한 함수가 package 외부에서 import되어 사용되는 것을 막기 위해서는 __all__
변수를 지정해 줄 수 있습니다.
package를 통해 import 될 수 있는 요소들은 모두 __all__
변수를 통해 정의 됩니다.
그리고 __all__
변수의 default 값은 모든 함수/변수/클래스 입니다.
그러므로 __all__
변수를 따로 정의해줌으로 import 될 수 있는 요소들을 제한할 수 있는 것입니다.
__all__
변수는 string 값의 요소를 가지고 있는 list 입니다 (list of strings).
그러므로 import 되길 원하는 요소들을 string으로 list에 선언해주면 됩니다.
맥에서는 터미널에서 pip
를 통해 외부 패키지를 설치할 수 있습니다.
pip install Django