파이썬에서 다른 코드(모듈)를 불러오는 경우가 많은데, 보다 보면 from import를 사용하기도 하고, import as를 사용하기도 합니다. 두 개에는 어떠한 차이가 있는지 설명하도록 하겠습니다.
1. From import, import as 차이
Import는 전부 다른 모듈을 불러오기 위한 명령어 입니다. from import는 그 모듈에서 def 지정해서 가져오고, Import as는 그 모듈 전체를 가져온다고 생각하면 됩니다.
가장 큰 차이는 Import as는 다른 변수로 치환해서 가져오기 때문에 변수간의 충돌이 날 확률이 적다는 것 입니다. 반면에 from import는 일부만 가져오기 때문에 코드가 가볍다라고 할 수 있을 것 같습니다.
그럼 실직적으로 사용할때는 어떠한 차이가 발생하는지 예시를 들어서 설명하도록 하겠습니다.
#### From import에서 Date function 가져오기 ####
from datetime import date
print (date.today())
# 출력: 2023-08-25
datetime이라는 모듈에는 이미 date라는 class가 정의되어 있는데, 이 date를 직접 가져와서 사용하는 개념입니다.
#### import as 로 불러오기 예시 ###########
import datetime as dt
print (dt.date.today())
print (dt.time(1,2,3))
#출력: 2023-08-25
# 01:02:03
반대로 import로 불러오게 되면, date class를 포함한 datetime이 가지고 있는 모든 class, function를 사용할 수 있습니다. datetime이라는 것을 dt로 불러왔기 때문에 dt.date.today()라고 불러오면 from import로 date를 불러와서 date.today()라고 불러오는 것과 같은 역할을 수행하게 됩니다.
거기다가 추가로 date만 불러왔을 때는 사용할 수 없었던 다른 명령어도 수행 가능합니다. (dt.time() 같은)
가장 큰 차이는 dt로 내가 직접 변수를 지정해 주었기 때문에 다른 명령어 또는 변수들과 충돌날 일이 없다는 것입니다.
2. 내가 만든 모듈 불러오기
혹시 이해가 잘 안 되신다면, 직접 모듈을 만들어서 불러오는 과정을 해보시면 쉽게 이해할 수 있습니다. 우선 같은 폴더에 testcode1.py라는 파일을 만들고 아래와 같이 function을 만들어 줍니다.
"""
Testcode1.py
Countdown(int n) n부터 0까지 숫자를 출력해준다
countup(int n) 0부터 n까지 숫자를 출력해준다.
"""
def countdown(n): # n부터 0까지 숫자 출력하기
a = int (n)
while 0 <= a:
print(a, end=' ')
a = a-1
print()
def countup(n): # 0부터 n까지 숫자 출력하기
a = 0
while a <= int (n):
print(a, end=' ')
a = a+1
print()
그리고 다른 py파일에서 위에 만들어둔 파일을 import 해줍니다. 저는 Test.py라고 새로 만들었습니다.
"""
Test.py
"""
from Testcode1 import countdown # from import로 불러오기
countdown(10)
#출력: 10 9 8 7 6 5 4 3 2 1 0
import Testcode1 as TC1 # import as로 불러오기
TC1.countdown(9)
#출력: 9 8 7 6 5 4 3 2 1 0
TC1.countup(5)
#출력: 0 1 2 3 4 5
처음 from import로 불러올 때는 위에 Testcode1.py에 지정해 둔 countdown이라는 코드를 직접 불러와서 사용해 주었습니다. 단순한 용도로 사용하기에는 from import만으로 충분할 수 있습니다.
반면에 Import as로 불러올 때는 TC1이라는 변수로 따로 지정해서 Testcode1 코드 전체를 가져옵니다. 따라서 countdown 뿐만 아니라 countup도 같이 사용할 수 있습니다. 또한 Testcode1의 코드가 다른 코드와 충돌 나는 것을 염려할 필요도 없습니다.
3. 정리
정리하자면 Import as는 모듈 전체를 가져오기 때문에 좀 더 편하게 사용할 수 있고, 변수 간에 꼬일 염려가 없지만, 간단한 용도라면 from import로 한두 개의 function만 직접 불러와서 좀 더 가볍게 사용할 수 있습니다. 일반적으로 import as가 더 자주 쓰입니다.
물론 하고자 하는 코딩의 목적과 사용하는 모듈에 따라서 적합하게 사용해야 합니다.
'파이썬 > 파이썬 기초' 카테고리의 다른 글
[파이썬 python] 텍스트 파일 불러오기 (Open, text) (0) | 2023.08.27 |
---|---|
[파이썬 python] 변수 출력 하기 (프린트, print, format) (0) | 2023.08.27 |
[파이썬 Python] 모듈 사용과 예제 (패키지 불러오기) (0) | 2023.08.26 |
[파이썬 Python] 고유한 값들의 집합 Set (0) | 2023.08.25 |
[파이썬 Python] 변경 불가능한 리스트 튜플 (Tuples, 리스트 차이) (0) | 2023.08.25 |