[Python 입문 강좌 - 17] 파이썬 모듈 정리 및 사용법

 

더보기

 


1. 모듈화

 

복잡한 프로그램을 설계할 때 하나의 파일로 모든 기능을 구현한다는 것은 현실적으로 어렵고 바람직하지 않습니다.그래서 복잡한 프로그램을 설계할 때 Top-down 방식을 사용합니다. 아래 그림에서 보듯 메인 모듈은 몇 개의 하위 모듈로 구성되어있습니다. 또한 하위 모듈 아래에 다시 하위 모듈이 있습니다. 하위 모듈은 서브 모듈이라고도 부를 수 있습니다. 이렇게 모듈화는 복잡한 프로그램을 작은 단위로 나누어 관리하고 개발하는 것을 의미합니다. 모듈화를 통해 코드의 가독성과 유지보수성이 향상되며, 코드 재사용성도 높아져 개발 생산성이 증가합니다.

 

아래 이미지는 쇼핑몰 결제 시스템을 모듈화 개념에 따라 구성한 것입니다. 쇼핑몰 결제 시스템은 신용카드 결제 모듈, 계좌이체 결제 모듈, 휴대폰 소액 결제 모듈로 구성되어 있고, 각 모듈은 각각의 하위 모듈들로 구성됩니다.

 

파이썬 모듈 이미지

 


2. 모듈(Module)이란?


파이썬 모듈이란, 함수나 변수, 클래스 등이 정의된 파이썬 파일(.py)로, 다른 파이썬 프로그램에서 불러와 사용할 수 있습니다. 모듈은 크게 표준 모듈과 사용자 정의 모듈로 나뉘며, 표준 모듈은 파이썬에서 제공하는 모듈이고, 사용자 정의 모듈은 개발자가 만든 모듈입니다.

 


2.1 모듈의 구조와 작성 방법

 

모듈을 작성할 때는 다음과 같은 규칙을 따라야 합니다. 첫 번째로 모듈의 이름은 가능한 짧고 간결하게 작성해야합니다. 두 번째로 모듈의 이름은 *snake_case 방식으로 작성해야합니다. 세 번째로 모듈 내에서 변수나 함수, 클래스의 이름도 가능한 짧고 간결하게 작성해야하며 snake_case방식으로 작성해야합니다.

 

*snake_cas 방식은 변수, 함수, 메서드, 모듈 등의 이름을 지을 때 사용되는 네이밍 방식 중 하나이다. snake_case 방식은 단어와 단어 사이를 언더바('_')로 구분하는 방식을 의미한다. snake_cas 방식의 장점은 가독성이 좋다는 것이다. 단어와 단어 사이를 명확하게 구분하기 때문에 변수나 함수 등의 이름이 길어져도 읽기 쉽고 이해하기 쉬운 코드를 작성할 수 있다. 예를 들면 my_variable과 같다.

 


파이썬 모듈은 크게 두 가지 부분으로 나뉩니다. 첫 번째는 __doc__ 문자열을 포함한 헤더 부분입니다. 이 부분은 모듈의 정보를 기술하며, 모듈의 이름, 작성자, 설명 등을 포함합니다. 두 번째는 실행 코드 부분입니다. 실행 코드는 모듈을 사용할 때 실제로 실행되는 코드로, 모듈이 어떤 기능을 제공하는지를 나타냅니다. 이 부분에서는 함수, 클래스, 변수 등이 정의됩니다. 

 

모듈의 코드 예시는 아래 코드와 같습니다.  코드에서 모듈의 정보를 """로 감싸는 문자열로 작성하였습니다. 모듈의 정보에는 모듈의 이름, 작성자, 작성일 등을 포함하며 이렇게 작성된 모듈의 정보는 __doc__속성을 이용하여 확인할 수 있습니다. 또한 함수 my_function에 대한 도큐먼트 문자열도 작성하였습니다. 이 도큐먼트 문자열은 함수의 이름, 설명, 매개변수, 반환값 등을 포함하고 있습니다. 이렇게 작성된 도큐먼트 문자열은 help(my_function)과 같이 help함수를 이용하여 확인 할 수 있습니다.

 

"""
파이썬 모듈 예시

작성자: 아무개
작성일: 2023-04-04
"""

def my_function(x, y):
    """
    두 개의 수를 더한 값을 반환합니다.

    Args:
        x (int): 첫 번째 수
        y (int): 두 번째 수

    Returns:
        int: 두 수를 더한 값
    """
    return x + y

 


2.2 모듈 생성 및 사용법

2.2.1 모듈 생성하기

 

모듈을 생성하는 방법은 간단합니다. 파이참에서는 아래 이미지와 같이 새로운 파이썬 파일을 만들면됩니다. 파일 이름은 원하는 이름으로 만들어주면됩니다. 여기서는 my_module.py로 만들겠습니다. 그 다음 아래와 같이 코드를 작성하겠습니다. 이제 my_module.py 파일을 다른 파이썬 프로그램에서 사용할 수 있게 됩니다.

 

파이참에서 파이썬 파일 만드는 방법 이미지
파이참에서 새로운 파이썬 파일 만드는 방법

 

def add(a, b):
    return a + b

def multiply(a, b):
    return a * b




2.2.2 모듈 불러오기

 

만든 모듈을 불러오기 위해서는 import 키워드를 사용해야합니다. 아래 코드는 위에서 만든 my_module을 불러오는 방법으로 ' import 모듈명 '형식을 이용해 모듈을 불러왔습니다. (파이썬에서 모듈을 불러올 때는 해당 모듈에서 불러오려는 변수와 함수보다 먼저 import를 호출해야 합니다. 이는 모듈이 로드되는 시점에서 불러오려는 변수나 함수가 정의되어 있어야 하기 때문입니다. )

 

import my_module

 


2.2.3 모듈의 함수 사용하기

 

모듈을 불러온 후에는 모듈 내의 함수를 사용할 수 있습니다. 모듈 내의 함수를 사용하기 위해서는 '모듈명.함수명()' 형식을 이용해 함수를 호출할 수 있습니다. 아래 코드는 my_module..py에서 정의한 함수를 호출하여 사용하는 예시 코드입니다. 

 

import my_module

result1 = my_module.add(3, 4)
result2 = my_module.multiply(3, 4)

print(result1)  # 출력: 7
print(result2)  # 출력: 12

 


3. 파이썬 표준 라이브러리

 

파이썬은 다양한 기능을 제공하는 표준 라이브러리를 포함하고 있습니다. 표준 라이브러리에 포함된 모듈들은 별도의 설치 없이 사용할 수 있습니다. 예를 들어, math 모듈은 수학 관련 함수를 제공합니다. 아래 코드는 math 모듈의 함수를 사용하는 예시 코드입니다.

 

import math

result1 = math.sqrt(9)
result2 = math.factorial(5)

print(result1)  # 출력: 3.0
print(result2)  # 출력: 120

 


4. 외부 모듈 설치 및 사용법

 

외부 모듈은 파이썬 표준 라이브러리에 포함되지 않은 모듈로, 대부분의 외부 모듈은 파이썬 패키지 관리자인 pip를 사용하여 설치할 수 있습니다. 예를 들어, requests 모듈은 웹 요청을 보내고 받는 기능을 제공하는 외부 모듈입니다. 아래 코드는  외부 모듈을 설치하고 사용하는 예제입니다.

 

먼저, 외부 모듈을 설치하기 위해 터미널에서 아래 명령어를 입력합니다. (파이참을 기준 터미널은 창 하단 터미널 버튼을 통해 열 수 있습니다.)

 

pip install requests

 

requests 모듈을 호출하여 웹 요청을 보내고 결과를 받아올 수 있습니다. (외부 모듈의 종류는 매우 많습니다. 그렇기 때문에 필요한 외부 모듈을 설치하고 호출해서 사용하면됩니다. 가장 많이 사용하는 외부 모듈은 numpy, pandas, opencv 등이 있습니다.)

 

import requests

response = requests.get("https://www.example.com")

print(response.status_code)  # 출력: 200
print(response.text)         # 출력: 웹 페이지의 내용

 



5. 모듈을 패키지로 구성하기

 

파이썬에서는 모듈을 패키지화하여 구조적으로 관리할 수 있습니다. 패키지는 모듈을 논리적으로 그룹화한 것입니다. 패키지를 통해 더욱 체계적으로 관리할 수 있으며 코드의 가독성을 높일 수 있고, 모듈의 이름 충돌 문제을 방지할 수 있습니다. 

 

모듈을 패키지화 하기 위해서는 패키지 디렉토리를 생성하고, 해당 디렉토리에 __init__.py 파일을 생성해야 합니다. __init__.py 파일은 패키지를 초기화하는 파일로, 해당 패키지의 모듈을 import하기 전에 실행됩니다. 이 파일은 빈 파일일 수도 있고, 패키지의 초기화 코드를 포함할 수도 있습니다. 예를 들어, my_package라는 패키지를 생성하려면 다음과 같은 디렉토리 구조를 가지게 됩니다.

 

my_package/
    __init__.py
    my_module.py

 

이후에는 my_module.py 파일 내에서 my_package 패키지의 모듈을 호출할 때, import my_package.my_module과 같은 방식으로 호출할 수 있습니다. 이때 my_package는 패키지이며, my_module은 my_package 패키지 내의 모듈입니다.

 

import my_package.my_module

 

또한, from ... import ... 구문을 사용하여 패키지의 특정 모듈이나 함수를 직접 불러올 수도 있습니다.

from my_package import my_module
from my_package.my_module import add