아래와 같이 2개의 python script가 있다.
main.py는 test.py를 import해서 test.py에 구현되어있는 함수 (add, mul) 함수를 사용한다.
# test.py
def add(a, b):
return a+b
def mul(a, b):
return a*b
if __name__ == '__main__':
print("main 호출")
print(add(10, 20))
print(mul(10, 20))
else:
print("else 호출")
# main.py
import test
print(test.add(20,30))
print(test.mul(20,30))
그럼 이제 main.py와 test.py를 각각 실행 시켜 보자. 어떤 결과가 나타날까?
main.py에서 사용한 "import test"는 test.py에 존재하는 모든 함수를 사용할 수 있다. 즉, add()와 mul() 함수를 사용할 수 있다. 하지만, 불필요한 symbol이 import되면서 프로그램 size가 증가할 가능성이 존재한다.
또 눈여겨 볼 부분은 test.py와 main.py의 실행 결과는 동일하지만, test.py에 있는 if/else이 서로 다르게 실행된 것을 알 수 있다. 이 부분은 나중에 다시 알아보도록 하자..
다시 본론으로 돌아와서..
그렇다면, 원하는 symbol만 import해서 사용할 수는 없을까?
from "모듈" import "사용하려는 symbol"
# main.py
from test import add
print(add(20,30))
print(mul(20,30))
이제 위 main.py script를 실행시켜 보자. error가 발생하였다.
즉, "from test import add"를 통해 test 모듈의 add() symbol만을 사용하려고 하였으나, 실제로는 mul() 까지 사용하면서, "NameError : name 'mul' is not defined' 라는 error msg를 출력하였다.
참고로 모듈을 import하는 방법에는 아래와 같이 4가지 방식이 존재한다.
import 모듈명 import 모듈명 as 모듈별칭 from 모듈명 import 함수명[, ...] from 모듈명 import 함수명 as 함수별칭 |
[파이썬(Python] #24 클래스(class) / 객체(instance) / __new__ / __init__ (0) | 2021.09.17 |
---|---|
[파이썬(Python)] #14. 자료형 (딕셔너리(dict)) (0) | 2021.08.22 |
[파이썬(Python)] #9. re 모듈, 정규식 표현 (0) | 2021.08.22 |
[파이썬(Python)] #24. with 구문 (0) | 2021.08.22 |
[파이썬(Python)] #6. list comprehension (0) | 2021.08.22 |