변수나 함수 그리고 클래스 등을 모아놓은 파일이다.
따로 모듈로 모아놓은 이유는 다른 파일에서 재사용이 가능하게 하고, 전체 코드가 한 파일에 놓기에는 너무 커졌을 때 여러 파일로 나누어서 정리를 하기 위해서이다.
len함수를 직접 구현하지 않아도 파이썬에서 이미 모듈로 구현해 놓았음으로 그냥 가져다 쓰면 되는 것 처럼 모듈은 다른 사람들이 이미 만들어 놓은 모듈을 사용할 수 있고, 우리가 직접 만들어서 사용할 수도 있다.
#my_module.py
my_module_var = 7
def my_module_func():
return "hello"
class MyModuleClass:
pass
그 후 단순히 다른 파일에서 불러와 사용하면 된다. (모듈을 불러와 사용하기 위해서는 import라는 키워드를 사용하면 된다.)
주의할 점은 모듈을 import할때 파일 확장자인 ".py"는 제외하고 파일 이름만 사용해서 import해야 한다.
import my_module
my_module.my_module_func()
#main.py
import my_module
print(my_module.my_module_var)
my_module.my_module_func()
my_module_class = my_module.MyModuleClass()
from my_module import my_module_func, my_module_var
print(my_module_var)
my_module_func()
모듈에서 사용하는 것이 명확할 때 from import를 사용하면 편리하다.
별표를 사용하면 해당 모듈의 모든 요소가 곧바로 imoprt된다.
from my_module import *
from my_module import my_func as f1
from my_module2 import my_func as f2
from my_module3 import function_with_nme_too_long as f3
f1()
f2()
f3()
import my_module as m1
m1. my_module_func()
import pkf.mod1
from plkg.mod2 import func2
pkg.mod1.func2(0
func2()
__init__
.py파일을 통해 package 초기 설정을 가능하게 해준다.__init__
.py파일이 있으면 패키지가 imoport될 때 __init__
.py 파일의 코드들이 자동으로 실해된다
__init__
.py파일을 통해 다음 사항들을 알 수 있다.
- import할 때 경로의 총길이 줄여주기
- package에서 import할 수 있는 변수/함수/클래스 제한하기
- 그 외 package가 import 될 때 꼭 먼저 실행되어야 하는 코드들
#__init__,py
from mod1 import func2
#main.py
from pkg import func2
func2()
__init__
.py 파일을 해용해서 import 할 수 있는 변수/함수/클래스를 제한할 수 있다.__all__
변수를 지정해 줄 수 있다.__all__
변수를 통해 정의된다.__all__
변수 의 default 값은 모든 함수/변수/클래스이다.__all__
변수를 따로 정의해줌으로 import 될 수 있는 요소들을 제한할 수 있다.__all__
변수는 string 값이 요소를 가지고 있는 list이다.(list of string)#__init__.py
from mod1 import func2
from mod2 import func3
__all__ = ['func2', 'func3']
#main.py
from pkg import *
func2()
func3()
func4() ##func4함수는 __all__에 정의되지 않았으므로 import 될 수 없음
pip install Django