python | February 11, 2020
따로 모듈로 모아놓는 이유는:
다른 파일에서 불러올 때는:
case1) import
: 확장자 .py는 제외하고 파일 이름만 사용한다.
case2) from-import
: 특정 모듈에서 특정 함수나 변수 등만 import 할 수 있다.
case3) from-import *
: 해당 모듈의 모든 요소가 곧바로 import 된다.
case4) (from) import as
: 모듈명이나 함수 등 불러오는 것의 이름을 바꿔서 가져올 수 있다.
여러 모듈을 사용하면 이름 충돌이 있을 수 있고, 원하는 모듈의 이름이 너무 길 수도 있어서 새로운 이름을 주어서 사용할 수 있다.
불러온 module을 사용할 때는:
case1) module 이름을 dot 앞에 붙이고, 불러오고자 하는 것을 호출한다.
case2) from-import를 사용할 때는 어떤 case든지 module 이름을 붙이지 않고 호출 가능하다.
module에서 사용하는 것이 명확할 때 from import를 사용하면 편리하다.
case3) from-import 방식이므로 모듈명 없이 원하는 것 호출 가능하다.
그러나 별표*를 사용하는 것은 권장하지 않는다. local scope를 가지고 있는 다른 변수/함수/클래스와 이름 충돌이 있을 수 있기 때문이다.
case4) 새로운 명칭으로 호출한다.
import 방식은 모듈명을 붙이고 호출하고, from-import 방식은 모듈명 없이 호출한다.
# case1)
import my_module
my_module.my_module_func()
# case2)
from my_module import my_module_func, my_module_var
my_module_func()
# case3)
from my_module import *
my_module_func()
# case4)
import my_module as m1
from my_module import my_func as f1
from my_module2 import my_func as f2
m1.my_module_func()
f1()
f2()
import pkg.mod1
from pkg.mod2 import func2
1. Import 할 때 경로의 총 길이 줄여주기
#원래의 방식은 아래처럼 main.py에서 매번 경로를 타입해야한다.
import pkg.mod1
pkg.mod1.func2()
#그런데 pkg안에 있는 __init__.py에서 아래처럼 해주면:
from mod1 import func2
#main.py에서는 아래처럼 간단히 호출가능:
from pkg import func2
func2()
2. __all__
: Package중 import 할 수 있는 변수/함수/클래스 제한하기
# __init__.py에서:
from mod1 import func2
from mod2 import func3
__all__ = ['func2', 'func3']
3. 그 외 package가 import 될 때 꼭 먼저 실행되어야 하는 코드들