사용할 함수나 클래스 등을 구현한 파일을 불러와 사용할 수 있다.
# my_module.py
my_module_var = 7
def my_module_func():
return "Hello!"
class MyModuleClass:
pass
위와 같은 파일을 만들고 위에있는 내용을 불러와 사용할 파일의 위에 import 해준다.
그후 사용할 함수 my_module_func를 my_module.my_module_func()를 호출한다.
import my_module
my_module.my_module_func()
사용할 함수나 클래스 등에 모듈 이름을 붙이지 않고도 사용할 수 있다.
from <모듈 이름> import <함수/변수/클래스1>, <함수/변수/클래스2>, ..., <함수/변수/클래스N>
from my_module import my_module_func, my_module_var
import 뒤에 * 를 붙여 모듈의 모든 요소를 import할 수 있다. 하지만 이렇게 하는 방법은 좋지않다. local scope를 가지고 있는 다른 변수/함수/클래스 들과 이름 충돌이 날 수 있는데 이럴 경우 알기가 쉽지 않다고 한다.
여러 모듈을 import할때 동일한 함수가 있거나 모듈의 요소 이름이 너무 길때는 import as 키워드를 사용해 새로운 이름으로 모듈의 요소를 사용할 수 있다.
from my_module import my_func as f1
from my_module2 import my_func as f2
from my_module3 import function_with_name_too_long as f3
f1()
f2()
f3()
module이름 또한 as를 사용해 새로운 이름을 줄 수 있다.
import my_module as m1
m1.my_module_func()
package는 module과 마찬가지로 다른 파일에서 불러와 사용하는 개념이다. 차이점은 module보다 더 크고 복잡한 코드라는 점이다.
module의 코드 양이 너무 커 한파일에 넣기 비효율 적일 수 있다. 그럴때 여러 파일에 코드를 나누어 관리하는 것이 효과적이고 여러 파일에 나누어져 있는 코드를 다른 곳에서 하나의 module로 불러와 사용할 수 있게 해준다. 그런 파이썬 파일들로 이루어져 있는 디렉토리가 package이다.
import 디렉토리명.모듈파일명 으로 사용할 수 있고
from 디렉토리명.모듈파일명 import (함수, 변수, 클래스 등) 으로 사용한다.
import pkg.mod1
from pkg.mod2 import func2
pkg.mod1.func2()
func2()
파이썬은 __init_.py를 통해 package초기 설정을 가능하게 해준다
Package 안에 __init_.py 파일이 있으면 package가 import 될때 __init__.py 파일의 코드들이 자동으로 실행된다.
import pkg.mod1
pkg.mod1.func2()
func2()를 호출할 때마다 경로를 다 입력해야 해서 번거롭다. __init__.py안에 func2함수를 먼저 한번 import하게되면 함수의 이름만 입력해 사용할 수 있다.
# __init__.py
from .mod1 import func2
# main.py
from pkg import func2
func2()
__all__ 변수는 string 값의 요소를 가지고 있는 list이다. (list of strings).
그러므로 import 되길 원하는 요소들을 string으로 list에 선언해 사용한다.
# __init__.py
from .mod1 import func2
from .mod2 import func3
__all__ = ['func2', 'func3']
# main.py
from pkg import *
func2()
func3()
func4() ## <== Error. func4 함수는 __all__ 에 정의되지 않았으므로 import 될 수 없음.
그 외 package가 import될때 꼭 먼저 실행되어야 하는 코드들을 입력해 사용할 수 있다.