반응형
이전 글「4편. 데이터 구조(리스트, 딕셔너리) 이해하기 – 파이썬 기초 코딩 필수 개념」에서 자료를 “담는 방법”을 배웠다면, 이번 편은 그 자료를 제대로 ‘굴리는 방법’ 입니다.
핵심 주제는 단 하나:
함수는 코드를 ‘읽기 쉬운 형태’로 바꿔주는 가장 강력한 도구다.

1) 왜 함수를 쓰면 코드가 훨씬 읽기 쉬워질까?
초보 때 가장 흔한 문제는 이겁니다.
- 코드가 길어짐
- 중간에 뭘 하고 있는지 “맥락”이 사라짐
- 같은 로직을 복사/붙여넣기로 반복함
함수는 이 문제를 3가지 관점에서 해결합니다.
(1) “이름”이 생기면, 코드가 문장처럼 읽힌다
예를 들어 아래처럼 길게 쓰면 읽는 사람은 매번 해석해야 합니다.
- 데이터를 받고 → 필터링하고 → 정렬하고 → 출력
하지만 함수로 나누면, 코드가 “설명서”처럼 바뀝니다.
- load_data()
- filter_users()
- sort_by_score()
- print_report()
함수 이름이 ‘주석’ 역할을 합니다.

(2) “입력과 출력”이 명확해지면 실수가 줄어든다
함수는 기본적으로 이런 계약(규칙)을 가집니다.
- 입력(파라미터): 함수가 받는 값
- 출력(return): 함수가 돌려주는 값
입출력이 명확해지면:
- 어디에서 문제가 생겼는지 찾기 쉬워지고(디버깅)
- 수정할 때도 한 부분만 고치면 됩니다(유지보수)
3) 재사용이 가능해져서, 같은 실수를 반복하지 않는다
복붙한 코드가 많아지면:
- 한 군데만 수정해도 다른 군데는 그대로라서 버그가 생기기 쉽습니다.
함수로 빼면 “수정은 한 번”입니다.

2) 함수 기본 문법: 딱 이 구조만 기억하면 된다
def 함수이름(입력1, 입력2):
처리 로직
return 출력
- def: 함수를 정의한다
- return: 함수가 결과를 돌려준다
- return이 없으면 기본적으로 None을 돌려줍니다
3) 리스트·딕셔너리를 함수의 입력/출력으로 쓰면 “구조화”가 된다
이번 글의 핵심 파트입니다.
리스트·딕셔너리는 실무/프로젝트에서 제일 자주 쓰이는 형태고, 함수와 만나면 코드가 시스템처럼 돌아가기 시작합니다.
예제 시나리오: “회원 목록”을 정리해서 보고서 만들기
- 입력: 사용자 정보 리스트(각 사용자 = 딕셔너리)
- 처리: 활성 사용자만 필터 → 점수 기준 정렬 → 요약 통계 생성
- 출력: 리스트/딕셔너리(보고서 데이터)

(1) 리스트를 입력으로 받고, 리스트를 출력하는 함수
def filter_active_users(users):
"""활성 사용자만 남긴 리스트를 반환"""
result = []
for u in users:
if u["active"] == True:
result.append(u)
return result
포인트:
- 함수는 원본 users를 직접 바꾸지 않고, 새 리스트를 만들어 반환하면 안전합니다.
- “입력은 그대로, 출력은 새로”가 초보에게 가장 실수 없는 패턴입니다.
(2) 리스트를 입력으로 받고, 딕셔너리를 출력하는 함수
def summarize_scores(users):
"""점수 요약 통계를 dict로 반환"""
scores = [u["score"] for u in users]
if not scores:
return {"count": 0, "avg": 0}
avg = sum(scores) / len(scores)
return {"count": len(scores), "avg": avg}
포인트:
- 요약 결과는 dict가 제일 깔끔합니다.
- 나중에 출력/저장/그래프에 그대로 쓰기 좋습니다.

4) “잘 구조화된 코드”의 기준 5가지
여기부터는 단순 문법이 아니라 코드 퀄리티 얘기입니다.
- 함수는 한 가지 일만 하게 만들기
- 함수 이름은 “무엇을 하는지”가 드러나게
- 입력/출력 타입(리스트/딕셔너리)을 고정하기
- 출력은 print가 아니라 return으로 돌려주기
- 예외 상황(빈 리스트 등)을 함수 내부에서 처리하기
이 5가지를 지키면, 초보 코드에서 “프로젝트 코드” 느낌이 납니다.

5) 작은 실전 예시: “보고서 만들기”를 함수 4개로 쪼개보기
def filter_active_users(users):
return [u for u in users if u["active"]]
def sort_by_score(users):
return sorted(users, key=lambda u: u["score"], reverse=True)
def summarize_scores(users):
scores = [u["score"] for u in users]
return {"count": len(scores), "avg": (sum(scores) / len(scores)) if scores else 0}
def build_report(users):
active = filter_active_users(users)
sorted_users = sort_by_score(active)
summary = summarize_scores(sorted_users)
return {"users": sorted_users, "summary": summary}
여기서 중요한 건 결과물입니다.
build_report() 하나만 호출하면:
- 사용자 리스트(정리된 상태)
- 요약 통계(dict)
가 한 번에 나옵니다.
이게 바로 “구조화”입니다.

다음 글 예고: 6편. 간단한 프로젝트 만들기
다음 6편에서는 지금까지 배운 걸 묶어서 작은 프로젝트 1개를 만듭니다.
6편에서 만들 프로젝트(예고)
-“할 일(To-Do) 관리 프로그램” 또는 “간단한 가계부 요약기”
1. 리스트/딕셔너리로 데이터를 저장하고
2. 함수로 입력/처리/출력을 분리해서
3. 작동하는 프로그램으로 완성합니다.
반응형
'코딩과 AI와 자동화 > 코딩' 카테고리의 다른 글
| 파이썬 미니 프로젝트: 리스트/딕셔너리 + 함수로 “할 일(To-Do) 관리 프로그램” 완성하기 (파이썬 기초 6편) (0) | 2026.01.14 |
|---|---|
| 4편. 데이터 구조(리스트, 딕셔너리) 이해하기 – 파이썬 기초 코딩 필수 개념 (0) | 2025.12.20 |
| 3편. 조건문·반복문 완전 정복 (파이썬 기초) (0) | 2025.12.10 |
| 2편. 파이썬 기본 문법 제대로 이해하기 (0) | 2025.12.06 |
| 코딩에 대한 모든 것 (0) | 2025.11.18 |