본문 바로가기
파이썬/파이썬 기초

[파이썬 Python] from import, import as 차이 (코드 불러오기)

by SMCon 2023. 8. 26.
728x90
반응형

파이썬에서 다른 코드(모듈)를 불러오는 경우가 많은데, 보다 보면 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가 더 자주 쓰입니다.

물론 하고자 하는 코딩의 목적과 사용하는 모듈에 따라서 적합하게 사용해야 합니다.

728x90
반응형