2017년 2월 13일 월요일

[Python] module import 방법



1]
>>> import os
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os']

2]
>>> from os import listdir
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'listdir']
os 모듈 내의 listdir() 함수를 호출할 경우 오류가 발생합니다. listdir()과 같이 해당 함수를 직접 이용하는 방법만 가능합니다.
>>> os
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    os
NameError: name 'os' is not defined
>>> os.listdir()
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    os.listdir()
NameError: name 'os' is not defined
>>> listdir()
모듈 내의 함수를 호출할 때 모듈을 임포트하는 첫 번째 방식에서는 '모듈명.함수명' 형태로 사용했는데, 두 번째 방식은 함수 이름만으로도 바로 함수 호출이 가능하므로 프로그래밍할 코드의 수가 적어진다는 장점이 있습니다. 다만 두 번째 방식은 기존에 선언된 변수나 함수와 이름이 충돌할 가능성이 있습니다.

extra]
아래 코드는 "os 모듈을 winos로 임포트하라"입니다. dir() 함수의 결괏값을 확인해보면 os 대신 winos 항목이 결괏값 리스트에 있는 것을 확인할 수 있습니다. 따라서 os 모듈 내에 있던 함수를 사용할 때도 os.getcwd()가 아니라 winos.getcwd()와 같이 사용해야 합니다.
>>> import os as winos
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'winos']
>>> winos.getcwd()
'C:\\Anaconda3\\Lib\\idlelib'
>>>

댓글 없음:

댓글 쓰기