상세 컨텐츠

본문 제목

[python] 모듈을 가져오는 import, from, as 를 언제 어떻게 사용하는 것이 좋을까?

IT/프로그래밍

by James Lee. 2020. 6. 13. 14:17

본문

파이썬 모듈을 가져오는 키워드는 import, as, from 가 있다.

이 글에서는 모듈을 가져오는 키워드를 어떻게 쓰는 것인지, 어떻게 사용하는 것이 적절한지 알아본다.

모듈을 가져오는 방법은 세 가지가 있다.

 

첫 번째, import A

 

이는 A 모듈을 import 하라는 의미다. 예시 코드를 보자.

import os

print(os.listdir()) 

두 번째, from B import A

이는 A 모듈로부터 B 함수를 가져오라는 의미다. 예시 코드를 보자.

from os import listdir

print(listdir())

os 모듈로부터 listdir 함수를 가져왔다.

첫 번째와 같이 os.listdir() 을 사용하면 os 모듈을 인식할 수 없기 때문에 에러가 발생한다.

세 번째 from A import *

 

모듈 내의 모든 것을 가져온다.

예시 코드를 보자.

from os import * 

print(dir()) 

출력 결과는 아래와 같다. 정말 os 모듈 내의 모든 함수를 가져왔다.

['DirEntry', 'F_OK', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_exit', 'abort', 'access', 'altsep', 'bt', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'datetime', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'symlink', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write'] 

 

참고로 세 번째 방식은 가급적이면 사용하지 않는 것이 좋다.

여러 모듈을 위와 같은 방식으로 가져오면 동일한 이름을 가진 함수에서 충돌이 발생할 수 있기 때문이다.

 

그럼 어떤 방식이 가장 좋은 방식인가? 장단점이 있지만 나는 첫 번째 방식이 제일 좋다고 생각한다.

함수가 어느 모듈에서 사용되었는지 명시해주기 때문이다.

 

 

아 마지막으로 as 키워드도 살펴보자.

as 키워드의 의미는 가져온 모듈에 이름을 붙여주는 것이다.

모듈의 이름이 긴 경우 축약하기 위해서 주로 사용한다.

import backtrader as bt  # backtrader 모듈을 bt 라는 이름으로 사용하겠음

cerebro = bt.Cerebro() 

정리 끝.

관련글 더보기

댓글 영역