여러분은 아마 python을 공부하시다가 import os 혹은 from os import * 과 같은 구문을 보신 적이 있을거예요. 혹시 이 차이점에 대해서 생각해보신적 있으신가요?
import os = os 모듈을 불러오는 것
from os import* = os모듈로 부터 os모듈이 가진 모든 함수를 불러옴
from os import 특정 함수 =os 모듈의 특정 함수를 불러옴
언뜻보면 같은 의미인 것 같습니다만 조금 다르답니다. 어떻게 다른지 결론부터 말씀드리면 아래와 같습니다.
"import만" 사용하면 모듈 안의 함수를 사용할 때, "모듈명.함수명( )"으로 하고, "from"을 사용하면 바로 "함수명( )"으로 사용
자세한 이해를 위해서 os 모듈의 listdir 함수를 사용하는 상황을 예로 설명드려보겠습니다.
모듈: os (운영체제에서 제공되는 여러 기능을 다룰 수 있는 파이썬 모듈)
모듈 내의 함수: listdir (현재 경로의 파일 또는 폴더의 리스트를 반환하는 함수)
현재 python 파일에서 listdir 함수를 사용하려면 listdir( )만 사용하면 됨.
이때 주의할 점은 from으로 불러온 모듈에 같은 이름의 함수가 있으면 문제가 발생.
참고로, import *를 와일드 임포트(wild import)라고 부름.
하나의 함수만 가져오는 것도 가능. (함수 사용법은 case2와 같음)
와일드 임포트는 뜻하지 않게 기존의 변수나 함수를 덮어 쓸 때가 있을 수 있으므로 해당 방법이 바람직함.
import pandas as pd
a = pd.DataFrame() # pandas 모듈의 데이터 프레임을 쓸 경우
VS
from pandas import DataFrame
a = DataFrame()