코린이의 소소한 공부노트

모듈의 이해 및 사용 - import 본문

Python

모듈의 이해 및 사용 - import

무지맘 2021. 6. 18. 21:04

그동안 별 설명 없이 import를 많이 써왔다. 이번에 볼 것은

1. 모듈이 무엇인지

2. 사용방법은 어떻게 되는지

3. 많이 쓰는 모듈에는 무엇이 있는지 알아보려고 한다.


1. 모듈(module)이란?


사전에서 나오는 모듈의 정의는 특성을 갖는 기능의 단위라고 나온다.

컴퓨터 하드웨어를 예로 들면 메인 보드, 인터페이스 보드, 보조 입출력 장치, 중앙 처리장치 등이 각 기능을 담당하는 모듈이라고 얘기할 수 있다. 

파이썬에서 말하는 모듈은

1) 소프트웨어 모듈을 말하는 건데, 이것은 각종 변수, 함수, 클래스 등 파이썬 정의와 문장들을 모아 놓은 파일이다.

2) 모듈이름.py라는 파일에 담겨 있다.

우리가 임의로 만들어서 사용하는 변수나 함수 등은 프로그램이 끝나면 사라져서 다른 프로그램에서 재사용하는 게 안되는데, 이런 것들을 모듈화 시켜두면 나중에 언제든 모듈만 불러와서 얼마든지 재사용이 가능하다.

 

파이썬 문서에는 피보나치 모듈을 예시로 들고 있다.

# 파일이름: fibo.py
# 피보나치수열: 이전 두 수의 합이 다음 수

def fib(n):    # n까지의 피보나치 수열 출력
    a, b = 0, 1
    while a < n:
        print(a, end=' ')
        a, b = b, a+b
    print()

def fib2(n):   # n까지의 피보나치 수열 리스트 반환
    result = []
    a, b = 0, 1
    while a < n:
        result.append(a)
        a, b = b, a+b
    return result

2개의 함수를 담고 있는 파일을 만들어 fibo.py로 저장해놨다. 이 예시가 어떻게 사용되는지 다음에서 살펴보자.


2. 모듈 사용 - 임포트 import


모듈 사용방법은 이미 다들 알고 있을 거라 생각한다. import 모듈이름을 메인 프로그램에 명시하면 모듈에 저장되어있는 모든 내용을 메인에서 사용 가능하다. 위에서 봤던 fibo 모듈을 사용한다면 이렇게 된다.

import fibo

fibo.fib(30)
>> 0 1 1 2 3 5 8 13 21

fibo.fib2(30)
>> [0, 1, 1, 2, 3, 5, 8, 13, 21]

# 자주 사용하는건 변수에 저장해서 사용 가능
fib = fibo.fib
fib(30)
>> 0 1 1 2 3 5 8 13 21

 

임포트를 하는데 여러 가지 방법이 있다.

1) import(임포트): 해당 모듈 전체를 불러온다. 우리가 이미 쓰고 있던 방법이다.

import math # 수학에 관련된 모듈

math.pi     # 원주율
>> 3.141592653589793

math.sin(45) # sin45 (각의 단위는 라디안)
>> 0.8509035245341184

노파심에 남겨보자면, 1라디안은 180/π도이다. (2π라디안 = 360도)

2) from import(프롬 임포트): 해당 모듈에서 특정 부분만 불러온다. 코드를 조금 더 간단하게 쓸 수 있다.

from math import pi  # math모듈에서 pi만 임포트
from math import sin # math모듈에서 sin만 임포트

# math.을 생략하고 사용할 수 있음
pi
>> 3.141592653589793

sin(45)
>> 0.8509035245341184

3) * import (스타 임포트): from import로 표현한 import. 1)의 import처럼 해당 모듈 전체를 불러오고, 사용은 2)처럼 앞부분을 생략하고 쓸 수 있다.

from math import *

# math.을 생략하고 사용할 수 있음
pi
>> 3.141592653589793

sin(45)
>> 0.8509035245341184

여러 가지 모듈을 불러올 때 * import는 권장하지 않는다. 다른 모듈에 같은 이름의 함수가 있다면 충돌이 일어나기 때문이다.

# math2.py
pi = 3.14 # math2 모듈의 변수
----------------------------------------------------
from math import *   # math.pi = 3.141592653589793
from math2 import *  # math2.pi = 3.14

print(pi)   # 두 모듈에 중복되는 것이 있다면
>> 3.14     # 나중에 불러온 모듈의 것이 적용됨

4) as import(애즈 임포트): 모듈명이 길어서 계속 쓰기 불편할 때 별칭을 붙일 수 있는 기능이다.

import math as m

m.pi
>> 3.141592653589793

m.sin(45)
>> 0.8509035245341184

4 글자짜리를 1글자로 줄여 쓰는 클라쓰..


3. 모듈의 종류


앞으로 자주 사용하게 될 모듈을 몇 가지 모셔왔다. 해당 모듈에 어떤 함수들이 있는지 다 알 필요는 없다. 어떤 모듈에 어떤 기능이 있는지만 알기만 한다면 그다음에는 코딩할 때 모듈이름.tap키를 눌러서 해당 모듈에서 어떤 함수를 쓸 수 있는지 찾아보거나 검색해보면 된다. (밑줄 친 부분의 설명이 필요하다면 etc.폴더 > 작은무지 글을 참고!)

1) math: 수학 모듈. 예시는 위에서 봤으니 생략하겠다.

2) numpy: 수치해석 모듈

import numpy as np
data = np.random.randn(50).cumsum()
data # 50개의 난수가 들어있는 배열
>> array([0.51474852, 1.65418267, 1.58988785, 2.44970736, 3.6825432 ,
       ... 중략 ...
       3.20361923, 3.09382642, 4.34024883, 4.61819447, 2.60524238])

3) matplotlib.pyplot 모듈: 이미지를 띄워주는 모듈. (여기서 matplotlib는 패키지 package다. 패키지는 여러 모듈을 담아놓은 상자라고 생각하면 된다.)

import matplotlib.pyplot as plt
%matplotlib inline # 주피터 내부에 그림을 띄움
... 위의 numpy 예시가 이어지는 중 ...
plt.plot(data)
>> [<matplotlib.lines.Line2D at 0x2a7cbb859a0>]
# 아래 그림이 결과

[그림 005] plot함수의 결과

4) pandas: 데이터 분석 모듈

import pandas as pd
data_ex = {'a':[1, 2, 3], 'b':[10, 20, 30], 'c':[100, 200, 300]}
# dict 형식으로 한 행씩 이름을 붙여 데이터를 만듦
df_ex = pd.DataFrame(data_ex)
df_ex
>> # 아래 그림이 결과

[그림 006] dataframe함수의 결과

5) os: 운영체제 종속 기능(파일 관리 등) 모듈

import os
path = os.getcwd() # 현재 실행중인 파일의 위치
path
>> 'C:\\Workspace\\python programming'

6) requests: HTTP 요청, 응답 등에 관한 모듈. 

import requests
resp = requests.get('http://naver.com')
resp.text # 링크에서 읽어온 html을 텍스트로 보여주는것
>> '\n<!doctype html>                 <html lang="ko" data-dark="false"> <head> ...중략... <meta name="description" content="네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요"/> 생략...

이 밖에 원하는 모듈이 있다면 파이썬 문서를 찾아보거나 구글링을 해서 찾아보면 좋을 것 같다.


<요약>

 

1. 모듈: 특정 기능을 하는 파일

- 재사용성 높아짐

- .py 확장자로 만들기도 가능

2. import 방식

- import 모듈이름: 전체 기능 불러오기

- from 모듈이름 import 특정기능: 특정 기능 불러오기 + 코드 간결

- from 모듈이름 import *: 전체 기능 + 코드 간결(비추천)

- import 모듈이름 as 별칭: 전체 기능 + 코드 간결

'Python' 카테고리의 다른 글

정규표현식  (0) 2021.07.23
클래스, 오브젝트  (0) 2021.06.25
람다(Lambda)함수 이해 및 사용하기  (0) 2021.06.11
함수를 이해하고 활용해보기  (0) 2021.05.27
공부하면서 만난 연습문제들 - 파이썬편  (0) 2021.05.21