하이루~
어제 쥐 책을 읽어봤더니 내용이 훌륭하더군요.
오랫동안 파이썬에 관련된 활동을 하신 분들이 1년 반이나 걸려 쓰셨으니까요. 그동안 책만 쓴 건 아니겠지만요.
하지만… 역시나… 어려웠습니다…
우리가 소화하기는 벅찹니다. 책에는 3일만에 볼 수 있다고 적혀있더군요.
갑자기 많이 배우면 소화불량 걸립니다…
어떤 프로그래머께서 이렇게 말씀하셨습니다.
“단기간에 뛰어난 프로그래머가 되려고 하면 절대 성공할 수 없느니라.”
오늘은 모듈을 어떻게 불러오는지 알아보도록 하죠.
어제 해보셔서 대충은 알고 계시겠지만 import를 사용하면 모듈을 불러올 수 있습니다.
import는 ‘수입하다’라는 뜻을 갖고 있구요, 컴퓨터에서는 다른 프로그램으로부터 데이터를 갖고 오는 것을 뜻하지요.
import에도 두 가지 방법이 있습니다.
|
import 모듈 from 모듈 import 변수나 함수 |
첫번째 방법은 모듈 전체를 가져오구요, 두번째 방법은 모듈 내에서 필요한 것만 콕 찍어서 가져오는 방법이죠.
두 방법을 비교해볼까요? 어제 소개해드린 Tkinter(티 케이 인터) 모듈을 두 가지 방법으로 사용해보겠습니다.
|
>>> import Tkinter >>> Tkinter.widget = Tkinter.Label(None, text='I love Python!') >>> Tkinter.widget.pack() |
첫 번째 방법으로 모듈을 불러오면 모듈 내의 변수를 사용하기 위해서는 ‘모듈.변수’의 형식으로 써주어야 합니다. 매번 써주려면 좀 번거롭겠죠?
|
>>> from Tkinter import * >>> widget = Label(None, text='I love Python!') >>> widget.pack() |
두 번째 방법은 모듈내의 이름을 콕 찍어서 가져오는 방법인데, 여기서는 import *라고 써서 전부 다 가져왔습니다.
이렇게 하면 좀 더 편리하군요.
하지만 마냥 좋기만 한 방법은 아니랍니다.
아래의 예에서는 멋 모르고 Label이라는 변수를 정의했다가 Tkinter의 Label이 덮어써버리면 피 보는 수가 있다고… 이 사회에 경종을 울리고 있습니다.
|
>>> Label = 'This is a Label' >>> from Tkinter import * >>> Label <class Tkinter.Label at 008B312C> |
이렇게 장단점이 있으니까 각자 입맛대로 쓰라는군요. 헐~
웬만하면 첫번째 방법을 쓰는 것이 좋겠죠?
지금까지 모듈을 불러오는 방법을 알아봤는데요, 불러온 모듈이 필요 없을 땐 어떻게 할까요? 필요 없는 모듈은 요렇게 지워주면 됩니다.
|
del 모듈 |
꼭 그렇게 해줄 필요가 있을까 싶지만, 프로그램을 짜다보면 이런 저런 일이 생기니까 알아두자구요.
다음 예제에서 모듈을 지우는 장면을 보실 수 있습니다.
|
>>> import calendar >>> calendar.day_name # calendar 모듈의 변수 day_name ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] >>> day_name = calendar.day_name # 내 변수 day_name으로 복사 >>> del calendar # 모듈을 지워줌 >>> day_name ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] |
calendar 모듈을 불러와서 리스트를 복사해두고 다시 모듈을 지워버렸군요.
이것이 이해가 되신 분을 위해 위의 예제가 아래의 예제와 같은 일을 한다는 것도 보너스로 알려드립니다.
|
>>> from calendar import day_name >>> day_name ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] |
del에 대해서 알려드리려다가 본의 아니게 불러오기 방법 두가지를 또 비교해버렸군요.
지우는 건 이 정도로 넘어가구요, 한 번 import한 모듈을 다시 불러올 수도 있답니다.
그 때는 아래와 같이 reload 함수를 사용하지요.
|
reload(모듈) |
웹 사이트를 파이썬으로 만들었다면, 일부 모듈을 수정할 경우에 이 방법을 사용하면 전체 프로그램을 중단하지 않아도 되니까 아주 유용하겠죠?
웹 서비스는 중단 없이 계속되어야 한다. 쭈욱~.
