카테고리 없음

Python 클래스와 객체

agingcurve 2022. 5. 28. 14:55
반응형

학습목표

  1. module에 대해 이해한다.
  2. module import 할 수 있다.
  3. 패키지를 이해하고 활용 할 수 있다.

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 파일은 비어있기도하고, 패키지내에 포함된 모듈들의 정보를 제공하기도 한다.