import
방법
# ***
# ### 1-1 모듈 import
하기
# #### 1) import
모듈명
# - 가장 기본적인 형태
# - 현재의 이름 공간에 mymath
이름이 유지되므로 mymath.area()
형태로 자격 이름 사용
# In[3]:
import mymath
print(mymath.area(5))
# #### 2) from 모듈명 import 이름들
# - 해당 모듈에 존재하는 지정 이름들을 현재 이름 공간으로 불러들인다.
# - 불러들인 각 이름들은 모듈 이름 없이 직접 사용 가능하다.
# - import
하는 이름들이 기존에 미리 존재하고 있었다면 그 이름들에 의해 참조되던 기존 객체들은 상실된다.
# In[4]:
from mymath import area, mypi
print(area(5))
# #### 3) from 모듈명 import *
# - 해당 모듈에 존재하는 '\_\_'로 시작되는 이름들을 제외한 모든 이름들을 현재 이름 공간으로 불러들인다.
# In[5]:
from mymath import *
print(area(5))
# #### 4) import 모듈명 as 새로운 모듈 이름
# - 해당 모듈을 새로운 다른 이름으로 사용하고자 할 때 사용
# - 기존 모듈 이름이 너무 길거나 현재 사용중인 다름 이름들과 충돌이 일어날 때 유용
# In[2]:
import string as chstr
print(chstr)
print()
print(chstr.punctuation)
# #### 5) from 모듈명 import 이름 as 새로운 이름[, 이름 as 새로운 이름]
# - 해당 모듈 내에 정의된 이름을 다른 새로운 이름으로 사용하고자 할 때 사용
# In[1]:
from string import punctuation
print(punctuation)
from string import punctuation as punc
print(punc)
# In[2]:
from math import floor as flr, ceil as cil
print(flr)
print(flr(4.5))
print(cil)
print(cil(4.5))
print()
from math import floor, ceil
print(floor(4.5))
print(ceil(4.5))
# - import
문은 보통의 문(statement)이 작성될 수 있는 곳이면 어디에서나 사용 가능
# - 예를 들면 함수 정의 def
문 안이나 if
문 안에서 사용할 수 있음
# In[40]:
def str_test(s):
import string
t = string.split(s)
return(t)
# ### 1-2 import에 의한 모듈 코드 수행
# - import는 코드를 가져오기만 하는 것이 아니라 가져온 코드를 수행한다.
# In[3]:
#FILE : mymath.py
mypi = 3.14
def add(a, b):
return a + b
def area(r):
return mypi * r * r
print(area(4.0))
# In[19]:
import mymath
#기존:
#50.24
# ### 1-3 컴파일과 적재시간
# - import mymath
를 수행할 때 발생하는 일
# - 1) 우선 mymath.pyc
를 찾는다.
# - 2) mymath.pyc
가 없다면 mymath.py
를 찾아서 mymath.pyc
를 생성한다.
# - 3) 생성된 mymath.pyc
를 메모리로 읽어들여 수행한다.
# - .pyc
파일
# - 바이트 코드 파일
# - 기계나 플랫폼(OS)에 의존하지 않도록 만들어진 일종의 목적 코드 (Object Code)
# - 파이썬은 컴파일 언어이면서 동시에 인터프리터 언어의 수행 방식을 취하고 있다.
# - 새로운 .pyc
생성에 대한 판단
# - .py
수정 시간이 .pyc
수정 시간보다 더 최근일 때
# - .py
가 없이도 .pyc
파일만 있어도 import
가능
# - 코드를 숨기는 간단한 기법으로 활용 가능
# ### 1-4 모듈 이름과 이미 사용하고 있던 이름이 같다면?
# - 이전의 이름이 참조하던 객체는 상실됨
# In[12]:
string = "My first string"
import string
print(string)
# In[13]:
import string
string = "My first string" #여기서 string이란 이름은 문자열을 참조하게 된다.
print(string)
# - 한번 import
되었던 모듈은 메모리에 적재되어지고, 나중에 다시 동일한 모듈을 import
하면 메모리에 적재되어 있던 모듈이 즉시 사용된다.
# In[4]:
import string
string.a = 1
string = "My first string"
print(string)
import string
print(string.a) # 여기서 string 모듈이 기존에 이미 등록되었던 것임을 알 수 있다.
# ***
# ## 2 모듈의 실행과 테스트 코드
# ***
# - \_\_name\_\_
# - 모듈의 이름이 자동으로 저장되는 변수
# - 현재의 모듈이 최상위 모듈로서 수행되는지, 아니면 다른 모듈에 의해 import되어 수행되는지를 구별하기 위해 주로 활용
# - 최상위 모듈: 파이썬 인터프리터가 기본적으로 가장 먼저 인식하여 처리하는 모듈
# - 모듈의 이름이 항상 "\_\_main\_\_"
# - prname.py
를 직접 수행할 때의 출력 내용: \_\_main\_\_
# - \>\>\> ipython prname.py
# - \_\_main\_\_
# - prname.py
가 최상위 모듈로서 수행됨을 의미
# In[5]:
#FILE : prname.py
print(__name__)
# - prname.py
가 모듈로서 다른 이름 공간으로 import
되어질 때의 출력 내용: prname
# In[6]:
import prname
print(prname.__name__)
# In[8]:
import string
print(string.__name__)
import re
print(re.__name__)
import os
print(os.__name__)
# - 아래 코드는 최상위 모듈로서 수행될 때 add()
함수 호출이 일어난다.
# - 보통 파이썬 모듈을 개발할 때에는 마지막 부분에 if \_\_name\_\_ == "\_\_main\_\_": 과 같은 코드를 추가하여 테스트 코드를 삽입한다.
# In[9]:
#file: module_test.py
def add(a, b):
return a + b
def f():
print("Python is becoming popular.")
if __name__ == "__main__":
print(add(1, 10))
f()
# - 정의된 모듈이 다른 모듈로 import
되어질 때에는 \_\_name\_\_은 모듈 이름 자체이므로 위 코드에서 if
문이 수행되지 않는다.
# - 즉, test()
함수 호출이 곧바로 되지 않는다.
# In[10]:
import module_test
# ***
# ## 3 패키지
# ***
# ### 3-1 패키지의 이해
# - 패키지 (Package)
# - 여러 모듈들을 한데 묶어서 정리해 놓은 구조
# - 물리적으로 여러 모듈 파일을 모아 놓은 디렉토리에 해당
# - 최상위 디렉토리 이름이 패키지 이름이 된다.
# - 최상위 디렉토리 하위에 여러 서브 디렉토리는 해당 최상위 패키지의 하위 패키지가 된다.
# - 예제: Speech 패키지
# - 각 폴더마다 \_\_init\_\_.py 파일 존재에 유의
# - 패키지가 임포트 되면 \_\_init\_\_.py 파일에 존재하는 내용은 자동으로 실행됨
# ![inheritance](../images/package.png)
# In[33]:
import Speech
# - Speech 디렉토리의 위치
# - sys.path
(또는 PYTHONPATH
환경 변수)에 열거된 폴더 중 하나에 위치해야 한다.
# - Speech/Recognition/HMM.py
코드 내용
# In[34]:
def train():
print("Train")
pass
def loadModel():
print("LoadModel")
pass
def saveModel():
print("SaveModel")
pass
# ### 3-2 \_\_init\_\_.py의 역할
# - \_\_init\_\_.py 파일이 존재해야지만 파이썬 패키지로서 인식됨
# ### 3-3 import
하기
# In[2]:
import Speech
# In[3]:
Speech.Recognition.HMM.train()
# In[4]:
import Speech.Recognition.HMM
Speech.Recognition.HMM.train()
# In[37]:
from Speech.Recognition import HMM
HMM.train()
# In[38]:
from Speech.Recognition.HMM import train
train()
# ### 3-4 import *
하기
# In[39]:
from Speech.Recognition.HMM import *
train()
loadModel()
saveModel()
# 참고 문헌: 파이썬(열혈강의)(개정판 VER.2), 이강성, FreeLec, 2005년 8월 29일