함수로 코드 정리하기
반복문만으로도 되는데… 함수가 있으면 일이 훨씬 편해져요
지난 글에서 반복문으로 “같은 일을 여러 번” 자동화하는 감각을 잡았잖아요. 이제 한 단계 더 가볼게요.
솔직히 말하면, 반복문은 엄청 도움 되는데 “반복되는 코드 덩어리”가 생기면 또 다른 문제가 생겨요. 수정할 때 어디를 고쳐야 하는지 헷갈리고, 실수하면 버그가 우글우글… 음… 그때 등장하는 게 바로 함수예요.
함수란 뭐냐고? “일을 맡기는 코드”예요
함수는 한마디로 말하면 이런 느낌이에요.
- “이 작업은 이렇게 입력받고
- 이렇게 처리해서
- 이 결과를 돌려주는 걸로 할게!”
예를 들어,
덧셈을 할 때마다 매번 같은 코드를 쓰지 말고add(a, b)같은 형태로 “덧셈 담당” 함수를 만들어서 호출하면 끝!
왜 함수가 필요하냐면… 반복이 반복을 부르거든요
반복문 글에서 이런 상황 봤을 수도 있어요.
- 어떤 조건이면 A를 출력
- 또 다른 곳에서도 조건이면 A를 출력
- 근데 나중에 A 출력 문구를 바꾸려면?
→ 여기저기 다 바꿔야죠. 아! 짜증 나죠…
함수로 정리하면 보통 구조가 이렇게 바뀝니다.
- 같은 로직은 함수 한 곳에만 적기
- 다른 곳에서는 함수 호출만 하기
사실은… 저도 예전에 “설마 같은 코드가 또 필요하겠어?” 하고 넘어갔다가, 뒤늦게 찾아보니까 비슷한 코드가 10군데 있더라고요.
그날 밤은 유머가 아니었어요. 진짜로요. 😅
함수 기본 문법(입력, 처리, 반환)
이 시리즈가 파이썬 기준으로 진행 중이라(맞죠?), 파이썬 예시로 갈게요.
def add(a, b):
result = a + b
return result
여기서 핵심은 딱 3개예요.
def add(a, b):: 함수 정의 + 입력값 이름들- 함수 안에서 처리
return result: 결과를 밖으로 돌려줌
함수 호출하는 방법: “작업 맡기기”
함수는 이렇게 호출합니다.
sum_value = add(3, 5)
print(sum_value)
출력은 8이겠죠.
여기서 중요한 포인트는, 함수는 보통
- “필요한 값”을 받아서
- “필요한 결과”를 돌려주고
- “그 다음 일은 호출한 쪽이 처리”
하는 구조라는 거예요.
입력값이 없는 함수도 있어요 (근데 대신 정해진 일을 해요)
가끔은 입력이 필요 없는 함수도 있어요. 예를 들면 “인사 출력” 같은 거요.
def say_hello():
print("안녕하세요!")
호출은 이렇게요.
say_hello()
반환값이 없는 함수도 있어요 (print만 하는 함수들)
반환 없이 출력만 하는 함수는 이런 식이에요.
def show_score(score):
if score >= 60:
print("합격!")
else:
print("불합격...")
이 경우엔 return을 안 해요.
대신 print로 결과를 보여주죠.
함수로 반복을 정리해보기: 같은 코드를 함수로 빼기
예를 들어, “리스트를 순회하면서 짝수면 출력” 같은 코드가 여러 군데 있다고 생각해볼게요.
(반복문만 쓰면 이런 식이 되기 쉽거든요)
nums = [1, 2, 3, 4, 5, 6]
for n in nums:
if n % 2 == 0:
print(n)
이걸 함수로 빼면:
def print_even_numbers(numbers):
for n in numbers:
if n % 2 == 0:
print(n)
print_even_numbers([1, 2, 3, 4, 5, 6])
print_even_numbers([10, 11, 12])
이제 “짝수 출력” 로직은 함수에만 있고, 다른 곳에서는 호출만 하면 돼요.
음… 이런 순간이 진짜 편합니다. 그냥.
“근데 내가 실수했지…” 흔한 오류 2가지
함수 처음 쓸 때 자주 터지는 것들만, 제가 겪은(?) 것처럼 유머로 정리해볼게요.
- return을 안 했는데 값을 받으려고 함
None이 와요.- “왜 출력이 이상하지?” 싶죠.
- 사실은 함수가 값을 돌려준 적이 없는 거예요.
def add(a, b):
result = a + b
# return을 깜빡함!
x = add(1, 2)
print(x) # None 나옴...
- 함수 이름/인자(입력값) 개수 틀림
- 컴퓨터가 “야… 너 뭐 넣을 건데?”라고 따집니다.
- 이건 에러 메시지만 보면 보통 금방 해결돼요.
미니 실습: 입력받고, 함수로 계산하고, 결과 출력하기
이번엔 “입력 → 함수 처리 → 반환 → 출력” 흐름을 한 번에 잡아볼게요.
요구사항
- 사용자에게 두 수를 입력받는다
- 두 수의 합을 함수로 계산한다
- 합을 출력한다
def add(a, b):
return a + b
x = int(input("첫 번째 수: "))
y = int(input("두 번째 수: "))
result = add(x, y)
print("합은:", result)
여기서 진짜 중요한 흐름은 이거예요.
input()은 입력을 받음add(x, y)는 계산 요청result는 함수 결과를 받음
어? 생각보다 별 거 없죠?
근데 이게 쌓이면 프로그램이 진짜 깔끔해져요.
마무리: 함수는 “정리하는 습관”이에요
반복문은 같은 일을 여러 번 하게 해줬고,
함수는 그 일을 “묶어서 재사용”하게 해줘요.
그리고 솔직히 말하면…
코드가 커지면 커질수록 함수는 선택이 아니라 생존이 됩니다. 나름 현실적인 얘기예요.
다음 글 예고: 리스트로 데이터 모으기
다음은 3-1. 리스트로 데이터 모으기예요.
반복문과 함수가 만나면 “데이터를 받아서 처리하는 패턴”이 엄청 잘 살아납니다.
다음 글에서 “이제 입력을 여러 개 다루는 방법”을 리스트로 배워볼게요.
그럼 다음에 봐요!



