[Python] 모듈(Module)

웹/파이썬 강의를 수강하며 모듈에 대한 설명을 잠깐 언급하셨는데, 이 기회에 한번 확실하게 정리하고자 한다.

 

 

파이썬 프로젝트를 진행할 때, 각각의 기능들을 모듈(Modules)화하여 사용한다. 여기서 모듈이란 자주 사용하는 함수들을 별도의 파일(.py)로 저장하는 것을 의미한다. 모듈은 파이썬에 bulit-in 되어 있는 모듈과 개발자가 직접 만드는 사용자 정의 모듈로 구분된다.

 

복잡한 프로그램을 설계할 때 하나의 파일로 모든 기능을 구현하는 것은 코드 가독성 및 효율성에 굉장히 부합하지 않는 설계이다. (가능은 하지만.. 절대 바람직하지 않은 행동이다) 때문에 항상 프로젝트를 진행할 때는 모듈화를 통해 코드 가독성과 유지보수가 빠르게 이루어질 수 있도록 하는 것이 중요하다.

 

아래는 모듈화의 예시이다. 아래와 같이 모듈화는 복잡한 프로그램을 작은 단위로 나누어서 관리 및 개발하는 것을 의미한다. 

 

 

모듈 생성하기

 

모듈을 만드는 것은 프로젝트 폴더에 새로운 파이썬 파일을 만드는 것과 동일한 행동이다. 파일 이름은 원하는 이름으로 만들면된다. 아래는 temperature.py로 만든 파이썬 모듈이다.

 

# temperature.py

def convert_to_celsius(fahrenheit):

		'''
    	보통 사용자 정의 함수의 경우, 코드 전개 이전에 함수 설명을 함께 넣어주는 것이 좋다.
    	여기서는 생략하겠다.
        '''
        
	return (fahrenheit - 32) * 5 / 9
    
def convert_to_fahrenheit(celsius):
	return celsius * 1.8 + 32

 

temperature.py 파일안에, convert_to_celsius 함수와 convert_to_fahrenheit 함수가 들어와 있는 것을 확인할 수 있다. 이제 우리는 정의한 모듈을 통해 해당 함수들을 자유롭게 불러와 쓸 수 있다.

 

 

⭐️ 모듈 불러오기 & 함수 호출하기

 

파이썬의 경우 두가지 경우로 모듈을 불러올 수 있다.

 

첫번째 경우는 import 모듈명 형식이다. 만든 모듈은 import 키워드(import 파일명)를 통해서 불러올 수 있다. 아래 코드는 방금 만든 모듈을 불러오는 코드다.

 

import temperature

 

이 경우, 모듈을 불러온 후에는 모듈 안에 있는 모든 함수를 사용할 수 있다. 이 때, 모듈 안에 있는 함수를 사용하기 위해서 모듈명.함수명() 형식을 이용하여 함수를 호출할 수 있다. 아래의 그 예시가 나와있다.

 

import temperature

result1 = temperatuee.convert_to_celsius(212)
result2 = temperature.convert_to_fahrenheit(100)

print(result1)
# 100.0

print(result2)
# 212.0

 

두번째 경우는 from 모듈명 import 사용하고 싶은 함수명 형식이다. 아래에 그 예시가 나와있다.

 

from temperature import convert_to_celsius

 

이 경우, 모듈안에 있는 함수를 모두 사용하는 것이 불가능하며, 내가 불러온 함수(이 경우엔 convert_to_celsius)만을 사용할 수 있다. 모듈안에 있는 함수를 사용하는 것도 모듈명.함수명() 형식이 아닌 함수명()만을 이용해 함수를 사용할 수 있다는 점에서 차이가 있다. 아래에 그 사용 예시가 있다.

 

result = convert_to_celsius(212)

print(result) # 100.0

 

 

외부 모듈 설치 및 사용방법

 

conda나 colab을 사용하여 프로젝트를 진행하며, 간혹 pip install ...을 사용하여 존재하지 않는 패키지를 다운받는 것을 확인할 수 있다. 이는 파이썬 표준 라이브러리에 포함되지 않은 외부 모듈을 설치하는 방법으로 대부분의 외부 모듈은 파이썬 패키지 관리자인 pip를 사용하여 설치할 수 있다.

 

예를 들어 자주 ML에 자주 사용되는 모듈인 numpy의 경우, 파이썬 자체에 내장되어 있지는 않은 모듈이기 때문에 conda를 사용할시에 따로 외부 모듈을 불러와야한다. 아래는 numpy 외부 모듈을 불러오는 그 예시이다.

 

pip install numpy

 

외부 모듈을 사용한 후, 기존에 내장되어 있는 파이썬 모듈과 같이 Import 하여 자유롭게 사용할 수 있다.

 

import numpy as np

ahram = np.array([1, 2, 3, 4])

 

 

⭐️ 모듈 패키지화

 

파이썬에서는 모듈을 구조적으로 관리하기 위해 모듈을 패키지화 할 수 있다. 패키지는 모듈을 논리적으로 그룹화한 것이며, 패키지를 통해 더욱 체계적으로 모듈을 관리할 수 있다.

 

모듈을 패키지화 하기 위해서는 패키지 디렉토리를 생성하고, 해당 디렉토리에 __init__.py 파일을 생성한다. __init__.py 파일은 패키지를 초기화하는 파일로, 해당 패키지 모듈을 import 하기 전에 실행이 된다. __Init__.py 파일은 빈 파일일 수 있고 패키지의 초기화 코드를 포함할 수 있다.

 

예를 들어 my_package라는 패키지를 생성하기 위해선 아래와 같은 디렉토리 구조를 가지게 된다.

my_package/
    __init__.py
    temperature.py

 

이렇게 패키지화 한 후에는 아래와 같이 패키지를 불러올 수 있다.

 

# 1
import my_package.temperature

# 2
from my_package import temperature

# 3
from my_package.temperature import convert_to_celsius

 

 

imp.reload()

 

만약 한번 임포트한 내용을 가지고 작업을 하다가 임포트한 모듈의 내용을 업데이트 하는 경우엔 그대로 사용하게 되면 모듈에 충돌이 발생할 수 있다. 때문에 임포트한 모듈의 내용을 업데이트 한 경우, imp.reload(모듈명) 함수를 사용하여 업데이트를 시켜준다.

 

import imp

imp.reload(temperature)

 

[주의] 파이썬의 경우, 모듈에서 불러오는 변수나 함수의 사용이전에 import를 호출해야한다. import 되어있지 않은 상태거나, 불러오는 함수 아래에 import를 적용할 경우 정상적으로 불러올 수 없다.

 


Reference

https://ctkim.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%AA%A8%EB%93%88-%EC%A0%95%EB%A6%AC

 

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

더보기 ##파이썬 입문 목차 1. 파이썬 이란? 2-1. 파이썬 윈도우 설치 2-2. 파이썬 맥북 설치 2-3. 윈도우 파이썬 IDE 파이참 설치하기 2-4. 맥북 파이썬 IDE 파이참 설치하기 3. 파이썬 변수(Variable)의 정

ctkim.tistory.com

https://hyunsitstory.tistory.com/19

 

[python] 패키지, 모듈, 함수, 클래스 개념 정리

< 관계도 > 패키지 (package) 1. 라이브러리라고도 부름 2. 특정 기능과 관련된 여러 모듈을 한 그룹으로 묶은 것 3. 패키지 안에 패키지가 있을 수도 있다. 4. import 모듈 from 패키지 (import 패키지도 가

hyunsitstory.tistory.com

경희대학교 이성원 교수님 - 웹/파이썬 프로그래밍 강의

 

'Python' 카테고리의 다른 글

[Python] Class 정복하기 (1)  (0) 2024.06.07
[Python] 이스케이프 시퀸스(Escape Sequence)  (0) 2024.04.26
[Python] join 함수  (1) 2024.04.25
[Python] list 함수  (1) 2024.04.25