[Programming Language]/[Python]

[Python] :: 모듈, 패키지, 라이브러리, 프레임워크의 차이 / 모듈 세부 내용

Semincolon 2023. 7. 14. 20:12

◎ 모듈, 패키지, 라이브러리, 프레임워크

1) 모듈(module)

  모듈이란 최하위 개념으로 변수, 함수, 클래스 등이 포함된 하나의 파이썬 파일(****.py)이다. 사용자가 정의한 함수를 모듈로 저장하여 사용하면 유지보수가 간편하고 재사용에 용이하다는 장점이 존재한다.

 

2) 패키지(package)

  패키지란 모듈의 상위 개념으로 여러 개의 단일 모듈이 모여 하나의 패키지를 이루게 된다. 모듈을 패키지라고도 하며 패키지를 모듈이라고도 한다. 그렇게까지 개념을 나눠서 사용하는 것 같진 않다.

 

3) 라이브러리(library) / 프레임워크(framework)

  라이브러리/프레임워크란 여러 모듈이 모인 패키지가 모인 개념이다. 즉, 여러 패키지의 집합이라고 볼 수 있다. 라이브러리/프레임워크를 패키지라고도 하며 패키지를 라이브러리/프레임워크라고도 한다.

 

3-1) 라이브러리와 프레임워크의 차이점

  라이브러리와 프레임워크는 개념은 비슷하나 제어 흐름이 어디에 있느냐에 따른 큰 차이가 존재한다. 라이브러리는 개발자가 모듈을 호출하는 형태의 일반적인 제어 흐름을 보이고 프레임워크는 개발자의 코드를 모듈이 직접 호출하는 제어 흐름을 보인다. 이 같은 흐름은 일반적인 제어 흐름과 반대되므로 '제어 역전(IoC: Inverse of Control)'이라고 부른다.


◎ 모듈(module)

  파이썬에서 모듈이란 하나의 파이썬 파일 즉, 확장자가 'py'인 파일을 뜻한다. 모듈에는 변수, 함수, 클래스 등이 포함될 수 있다. 따로 설치하지 않아도 파이썬에 기본적으로 내장된 모듈을 표준 모듈이라 하고, 따로 설치가 필요한 모듈을 외부 모듈이라 한다.

 

1) 표준 모듈

  대표적인 표준 모듈로는 math, random 등이 있다. 모듈을 사용하기 위해선 모듈을 불러와야(import) 한다. 아래는 모듈을 불러오고 모듈에 내장된 것들을 확인해보는 사진이다.

  모듈을 불러오고 모듈에 포함된 기능을 사용하기 위해선 모듈 이름을 쓰고 그 뒤에 점(.)을 붙여주면 된다. 다음은 math 모듈에 내장된 함수를 사용해보는 코드이다.

import math

a = math.sqrt(9)
print(a)

 1-1) from ~ import ...

  모듈에 내장된 변수나 함수를 많이 사용하는 경우에는 매번 모듈명을 적는 것이 굉장히 번거롭다. 이를 위해 파이썬은 다음과 같은 문법을 지원한다.

from (모듈명) import (가져올 함수)
from math import sqrt

a = sqrt(9)
print(a)

  위 코드처럼 작성하면 더이상 모듈명(math)을 사용하지 않고도 함수를 사용할 수 있게 된다. 그렇다면 모듈에 내장된 모든 기능을 한 번에 가져온다면 편하지 않을까? 그러나 이는 다른 식별자 이름과의 충돌이 일어날 수 있으므로 아래 코드처럼 한 번에 가져오는 것은 권장되지 않는다.

from (모듈명) import *

 

1-2) import ~ as ...

  모듈을 import 할 때 모듈명에 별칭을 지어줄 수 있다. 만약 모듈명이 길다면 이처럼 별칭을 붙여 사용하는 것이 편리할 것이다. 아래 코드에서 위에서 본 2개의 코드에 별칭을 붙여보았다.

import math as m

# math => m으로 사용
a = m.sqrt(9)
print(a)
from math import sqrt as s

# sqrt() => s()으로 사용
a = s(9)
print(a)

 

2) 외부 모듈

  이번에는 파이썬에 내장된 모듈이 아닌 외부에서 설치해야 하는 모듈을 사용해보도록 하겠다. 외부 모듈을 설치하기 위해선 커맨드 창(cmd)을 열고 아래와 같은 명령어를 입력해야 한다.

pip install 모듈명

  아래 사진에서는 파이썬에서 데이터를 분석할 때 사용하는 패키지인 pandas를 설치해보고 있다.

  외부 모듈을 설치했다면 사용 방법은 앞서 살펴본 표준 모듈과 동일하다. 아래 코드는 pandas 패키지에 내장된 함수를 사용하고 있다.

import pandas as pd

data = {
    'name': ['Beomwoo', 'Gildong', 'Jisu', 'Kim', 'Park'],
    'year': [2013, 2014, 2015, 2016, 2015],
    'points': [1.5, 1.7, 3.6, 2.4, 2.9]
}
df = pd.DataFrame(data)
print("type(df):", type(df))
print(df)

3) 직접 모듈 만들고 사용해보기

  모듈은 확장자가 'py'인 파일이라고 언급한 바 있다. 모듈을 직접 만들어 사용하면 유지보수도 쉬워지고 제3자가 코드를 보았을 때 이해하기가 더 쉽다는 등의 장점이 있다. 모듈을 만드는 것은 사실 별 내용이 없다. 그냥 사용할 변수, 함수, 클래스 등을 작성하고 저장하면 끝이다. 계산기 모듈을 만들어보고 사용해보도록 하겠다.

# calculator.py

def add(x, y):
    return x + y

def sub(x, y):
    return x - y

def mul(x, y):
    return x * y

def div(x, y):
    return x / y
import calculator as cal

print("4+5:", cal.add(4, 5))
print("4-5:", cal.sub(4, 5))
print("4*5:", cal.mul(4, 5))
print("4/5:", cal.div(4, 5))