모듈과 라이브러리 활용
모듈과 라이브러리로 “복붙 말고 재사용” 하는 법
이번 편은 7장 두 번째 글이야. 앞에서 리팩토링을 해봤다면, 이번엔 “어? 이 기능 이미 누가 만들어놨는데?” 그 느낌을 제대로 써먹는 시간!
솔직히 말하면, 혼자서 모든 걸 처음부터 다 만들면… 나중에 진짜 체력이 갈려. (15년 전에 한 번 해봤는데, 그때는 “왜 이렇게 고생하지?” 싶더라)
모듈이랑 라이브러리… 뭐가 달라?
처음엔 솔직히 헷갈려. 나도 그랬어. 딱 정리하면 이렇게 보면 돼.
- 모듈(module): 기능(코드) 묶음. “이 파일에 기능이 들어있다” 같은 느낌
- 라이브러리(library): 모듈들이 모여서 더 큰 묶음. “이걸 설치하면 도구가 한 세트로 있다” 느낌
그리고 둘 다 공통점은 하나야:
이미 만들어진 기능을 가져와서 내 프로그램에서 쓰는 것.
“그냥 코드 복붙”은 왜 나쁜 선택일까?
여기서 나름 한 가지 고백… 솔직히 나도 예전엔 복붙 엄청 했어.
근데 시간이 지나면 이런 문제가 생기지.
- 수정할 때 여러 파일을 다 찾아가며 고쳐야 함
- 비슷한 기능이 여기저기 중복으로 늘어남
- 결국 “이게 뭐였더라?”가 됨… 아… 진짜로.
그래서 이번엔 방식이 달라져.
복붙 대신 가져오기(재사용)로 가자.
라이브러리 가져오기: 제일 많이 하는 동작
파이썬 기준으로 예시를 들게. (바이브 코딩 기초 흐름에 맞춰서 쉽게!)
1) 기본 형태: import
import math
print(math.sqrt(16))
math는 수학 계산 도구 모음 라이브러리sqrt(16)은 제곱근 계산
이런 식으로 “필요한 기능이 이미 있다면 그걸 쓰는” 게 핵심이야.
“이 함수만 쓰고 싶어!” → from import
가끔은 전체 라이브러리 말고 특정 함수만 쓰고 싶잖아? 그럴 땐 이렇게.
from math import sqrt
print(sqrt(25))
이렇게 하면 코드가 좀 더 짧아지고, 내가 쓰는 게 더 명확해져.
모듈 만들기: 내 기능도 라이브러리처럼 써보자
이번엔 반대로 “내가 만든 기능을 모듈로 만드는 법”도 같이 가자.
사실 여기부터가 진짜 실력으로 이어져.
예를 들어 utils.py라는 파일을 만든다고 치자. (이름은 마음대로!)
utils.py
def make_banner(title):
return f"=== {title} ==="
그리고 메인 파일에서 가져와서 쓰기!
main.py
from utils import make_banner
print(make_banner("바이브 코딩"))
이게 뭐냐면…
내가 만든 기능을 ‘다음 프로젝트에서도 또’ 쓸 수 있게 되는 순간이야.
“그대로 import가 안 돼요”… 그 흔한 실패담 (유머 버전)
여기서 어?, 아! 하고 넘어가지 말고… 나처럼 한 번쯤 겪는 일이 있어.
실패 1) 파일 위치 때문에 import가 안 되는 경우
예전에 내가 이런 실수를 했거든.
main.py는 한 폴더utils.py는 다른 폴더
그랬더니 에러가 나더라.
결론은 간단해: 파이썬이 파일을 찾아야 import가 돼.
해결 팁: 같은 폴더에 두거나, 프로젝트 구조를 맞추면 대체로 끝!
실패 2) 이름이 겹쳐서 이상해지는 경우
내가 진짜 한 번…
list.py 같은 이름으로 파일을 만들어놓고, 파이썬 기본 list랑 충돌해서 “왜 이상하지?” 하다가 한참 헤맸어.
그래서 규칙 하나:
- 파일 이름은 웬만하면 파이썬 내장 이름 같은 거랑 겹치지 않게!
언제 라이브러리를 쓰고, 언제 직접 만들까?
이 질문 진짜 중요해. 그냥 “무조건 가져오기”는 또 아니야.
내 기준으로는 이렇게 정하면 돼.
- 라이브러리/모듈이 이미 있으면: 가져다 써라
- 핵심 로직(내 서비스의 차별점)은: 내가 직접 만드는 게 맞다
- 자주 바뀌거나 비슷한 코드가 반복되면: 모듈로 빼서 재사용해라
나름 이게 제일 현실적이더라.
오늘의 한 줄 결론
모듈과 라이브러리를 쓰면, 코드는 줄고 실수는 줄고 속도는 빨라진다.
그리고 다음 편으로 넘어가면… 그 재사용 감각을 기반으로 작은 프로젝트를 더 크게 확장할 수 있어.
다음 편 예고: 7-3 작은 프로젝트 확장하기
다음 글에서는 “아, 이 기능을 모듈로 빼놨더니 편하네?” 같은 흐름을 이어서,
지금까지 만든 작은 기능들을 한 덩어리로 묶고 조금 더 커진 프로젝트로 확장해볼 거야.
준비됐지? 음… 나도 기대돼.
(이번엔 또 어떤 에러가 나올지, 사실은 그게 제일 궁금하다)





