본문 바로가기
Python/기초

[기초] 파이썬(Python) from과 import의 차이에 대해 배워보자.

by 모두의 케빈 2023. 6. 30.

파이썬에 대해 처음 배우신 분들이 헷갈려하시는 개념 중 하나가 from과 import의 차이입니다. 어느 정도 숙련된 분들이라고 하더라도, 그 차이를 잘 모른 채 기계적으로 사용하시는 경우도 있습니다.

오늘은 파이썬에 대한 기초를 튼튼히 하기 위해 파이썬에서 모듈을 호출하는 방법인 from과 import에 대해 알아보도록 하겠습니다.

혹시 파이썬에 대해 아직 잘 모르시는 분들께서는 아래 글을 읽고 오시면 도움이 될 것 같습니다.

파이썬에 대한 완벽 정리: 시간은 없지만, 배우고 싶은 당신을 위하여

 

파이썬에 대한 완벽 정리: 시간은 없지만, 배우고 싶은 당신을 위하여

파이썬의 정의 파이썬은 도대체 무엇이길래 이렇게 인기가 많은 걸까? 코딩을 모르더라도, 파이썬에 대해서는 들어보셨을 겁니다. 마치 리그오브레전드라는 게임은 모르지만, 라디오 스타와 같

kevinitcoding.tistory.com

 

from과 import의 차이는?


[한 줄 요약]

import로 모듈(.py)을 호출하면 모듈명.함수명()    VS    from으로 모듈(.py)을 호출하면 함수명()  

 

파이썬은 객체 지향 언어입니다. 모든 개념은 객체로 구현되어 있습니다. 파이썬 프로그래머는 필요한 객체들을 이리저리 조합하여 특정 기능을 수행하는 프로그램을 만듭니다. 이런 하나의 기능 단위가 모듈이며 흔히 알고 있는 파이썬 파일(.py)이 이에 해당합니다.

프로그래머가 이미 구현되어 있는 기능, 모듈을 호출하거나 특정 함수를 호출하기 위해서는 두 가지 방법이 있습니다. import 명령어를 활용하거나 from 명령어를 활용하면 됩니다.

 

import는 '수입/수입하다'라는 의미입니다. 따라서 'import 모듈명'이라는 의미는 어딘가에 구현되어 있는 모듈을 나의 프로그램으로 수입하라는 의미입니다. 객체 지향 언어이기 때문에 모듈에는 클래스와 함수로 되어 있습니다. 모듈을 통째로 수입했으므로, 모듈 안의 함수를 사용하기 위해서는 '모듈.함수명()'의 규칙을 준수해야 합니다.

# import만 사용하면 모듈 안의 함수를 사용할 때, 모듈명.함수명()
import numpy as np
print(np.arange(0,10))
# 위 코드의 결과값
[0 1 2 3 4 5 6 7 8 9]

 

from은 보통 모듈 안의 특정 함수만 사용하고 싶을 때 많이 활용합니다. from은 '~로부터'라는 의미입니다. 따라서 'from 모듈명 import 함수'이라는 명령어의 의미는 '어떤 모듈로부터 특정 함수만 나의 프로그램으로 수입한다.'라는 의미입니다.

모듈에서 특정 함수만 호출했기 때문에 함수를 사용하기 위해서는 '함수명()'으로 바로 활용할 수 있습니다.

# from을 사용하면 바로 함수명()
from numpy import arange
print(arange(0,10))
# 위 코드의 결과값
[0 1 2 3 4 5 6 7 8 9]

 

자주 사용하지는 않지만, from을 활용하여 특정 모듈의 모든 함수를 호출할 수 있습니다. Asterisk(*, 별표)는 다양한 의미가 있지만 import와 함께 사용하면 'All'의 의미를 지닙니다. 따라서 'from 모듈명 import *'는 모든 함수를 호출하라는 명령어가 됩니다. 이때도 함수를 불러온 개념이기 때문에 함수는 '함수명()'으로 사용합니다. 이러한 방식을 wild import라고도 합니다.

# from과 wild import
from numpy import * 
print(arange(0,10))
# 위 코드의 결과값
[0 1 2 3 4 5 6 7 8 9]

 

 

언제 from을 사용하고, 언제 import를 사용해야 하나요?


 

[1] 암묵적인 규칙

코딩 세계에는 암묵적인 규칙이 있습니다. 프로그래머의 세계에서는 자신이 작성한 코드를 타인과 공유하는 경우가 많기 때문에 코딩 세계의 암묵적인 규칙을 준수하여 코드를 작성합니다. from과 import도 마찬가지입니다. 특별한 경우가 아니라면, 자주 사용되는 규칙에 맞춰서 사용하시면 됩니다.

예를 들어, numpy 패키지에서 배열을 생성하는 'arange' 함수를 사용하고 싶다고 하더라도 대다수의 프로그래머는 아래처럼 코드를 작성합니다.

# from을 사용하여 numpy 내 함수를 import하는 경우는 거의 없음
import numpy as np
print(np.arange(0,10))

 

[2] 모듈 내 다양한 함수가 필요하면 import, 특정 함수만 필요하면 from

numpy는 연산에 강점이 있는 패키지입니다. 특히 행렬 연산이 아주 강력합니다. 보통 연산이 필요한 프로그램은 패키지 내 연산과 관련된 다양한 함수를 활용하는 경우가 많습니다. 그래서 numpy 패키지를 활용하는 대부분의 경우는 'import numpy'를 합니다. 많은 함수를 사용해야 하는데, 그때마다 계속 함수를 추가할 수 없기 때문에 모듈 자체를 호출하는 개념입니다. 결국 이런 원리로 'import numpy'가 규칙처럼 자리 잡게 된 것입니다. 

from은 모듈 내 특정 몇 개의 함수만 사용하고자 할 때 유용합니다. 필요한 기능은 작은데, 굳이 전체 모듈을 불러오는 건 낭비니까요.

 

 

 

댓글