반응형
학습목표
- module에 대해 이해한다.
- module import 할 수 있다.
- 패키지를 이해하고 활용 할 수 있다.
module
- 모듈은 함수나 변수 또는 클래스를 모아 놓은 파일이다.
- 모듈은 다른 파이썬 파일에서 불러와서 사용할 수 있게 만든 파이썬 파일이다.
- 사용자가 직접 만들어서 사용 가능하다.
- 다른 사용자가 만들어 놓은 모듈을 불러서 사용하는 것도 가능하다.
- 아래와 같은 모듈들이 존재 한다.
- requests - HTTP 요청/응답 모듈
- numpy - 수치해석 모듈
- pandas - 데이터 분석 모듈
모듈 생성
- 모듈을 생성하기 위해서는 확장자가 .py 인 파일을 만들어야 한다.
- mymodule.py 파일을 생성하고, 아래처럼 함수를 두개 추가한다.
def add(a, b):
return a + b
def minus(a, b):
return a-b
In [1]:
import os
print(os.getcwd())
c:\ai\ai_2205\python
In [3]:
%%writefile test.py
def hello(msg):
print('hello!!'+msg)
Overwriting test.py
모듈 임포트
- 저장된 모듈을 사용하기 위해서는 import라는 예약어를 사용한다.
- 위에서 생성한 모듈 mymodule.py를 import하려면 아래와 같이 한다.
import mymodule
mymodule.add(2,3)
mymodule.minus(3,2)
현재 주피터노트북이 있는 디렉토리에 mymodule.py 파일을 생성한다.
In [3]:
import sys
sys.path
Out[3]:
['c:\\ai\\ai_2205\\python',
'C:\\Users\\User\\anaconda3\\python39.zip',
'C:\\Users\\User\\anaconda3\\DLLs',
'C:\\Users\\User\\anaconda3\\lib',
'C:\\Users\\User\\anaconda3',
'',
'C:\\Users\\User\\anaconda3\\lib\\site-packages',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\win32',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\win32\\lib',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\Pythonwin']
In [12]:
from test import hello
hello('test')
hello!!test
In [13]:
import test
test.hello('kang')
hello!!kang
다른 디렉토리에 있는 모듈 사용하기
- sys.path.append(모듈이 저장된 디렉토리) 사용하기
In [14]:
sys.path
Out[14]:
['c:\\ai\\ai_2205\\python',
'C:\\Users\\User\\anaconda3\\python39.zip',
'C:\\Users\\User\\anaconda3\\DLLs',
'C:\\Users\\User\\anaconda3\\lib',
'C:\\Users\\User\\anaconda3',
'',
'C:\\Users\\User\\anaconda3\\lib\\site-packages',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\win32',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\win32\\lib',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\Pythonwin']
In [4]:
sys.path.append('C:/ai/ai_lib')
sys.path
Out[4]:
['c:\\ai\\ai_2205\\python',
'C:\\Users\\User\\anaconda3\\python39.zip',
'C:\\Users\\User\\anaconda3\\DLLs',
'C:\\Users\\User\\anaconda3\\lib',
'C:\\Users\\User\\anaconda3',
'',
'C:\\Users\\User\\anaconda3\\lib\\site-packages',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\win32',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\win32\\lib',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\Pythonwin',
'C:/ai/ai_lib']
In [17]:
sys.path.remove(sys.path[-2])
sys.path
Out[17]:
['c:\\ai\\ai_2205\\python',
'C:\\Users\\User\\anaconda3\\python39.zip',
'C:\\Users\\User\\anaconda3\\DLLs',
'C:\\Users\\User\\anaconda3\\lib',
'C:\\Users\\User\\anaconda3',
'',
'C:\\Users\\User\\anaconda3\\lib\\site-packages',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\win32',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\win32\\lib',
'C:\\Users\\User\\anaconda3\\lib\\site-packages\\Pythonwin',
'C:/ai/ai_lib']
In [18]:
import mymodule
mymodule.add(2,4)
Out[18]:
6
import
- import를 사용하여 해당 모듈 전체를 import
In [19]:
mymodule.minus(4,3)
Out[19]:
1
In [ ]:
In [ ]:
from import
- 해당 모듈에서 특정한 타입만 import
In [5]:
from mymodule import add
add(2,3)
mymodule!
Out[5]:
5
In [24]:
import mymodule as m
m.add(12,3)
Out[24]:
15
* 임포트
- 해당 모듈내에 정의된 모든 것을 import
- 일반적으로 사용이 권장되지 않음
In [26]:
from mymodule import *
add(12,3)
minus(23,3)
Out[26]:
20
as
- 모듈 import 시, alias(별명) 지정가능
In [ ]:
패키지
- 모듈을 디렉토리 형식으로 구조화 한 것이다.
- 모듈들의 관리를 쉽게 하기위해 사용한다.
- 모듈들을 넣어둔 디렉토리명이 패키지 명이 된다.
- 패키지내 각 디렉토리에 init.py 파일을 생성한다.
- init.py 파일은 비어있기도하고, 패키지내에 포함된 모듈들의 정보를 제공하기도 한다.