파이썬 기초 완성형 시리즈 · 08장
함수 · def · 매개변수 · 인수 · return · 코드 재사용
함수 기초편
반복해서 쓰는 코드를 의미 있는 기능 단위로 묶는 가장 중요한 도구
이 장에서는 지금까지 배운 변수, 자료형, 조건문, 반복문을 한 덩어리의 기능으로 정리하는 함수를 배웁니다. 함수는 단순히 코드를 줄이는 문법이 아니라, 읽기 쉽고 수정하기 쉬운 프로그램을 만드는 핵심 구조입니다. 이 장의 목표는 함수를 왜 만드는지, 어떻게 정의하고 호출하는지, 값을 어떻게 주고받는지를 확실히 이해하는 것입니다.
이 장에서 배우는 것
- 함수가 왜 필요한지 이해합니다.
- def로 함수를 정의하는 법을 익힙니다.
- 매개변수와 인수의 차이를 배웁니다.
- 함수 안에서 값을 계산하고 return으로 돌려주는 방법을 이해합니다.
- 초보자가 자주 헷갈리는 호출, 괄호, 들여쓰기, 반환값 개념을 정리합니다.
이 장을 끝내면
- 똑같은 코드를 여러 번 쓰지 않고 함수로 묶을 수 있습니다.
- 입력값을 받아 결과를 돌려주는 함수 구조를 만들 수 있습니다.
- 출력용 함수와 계산용 함수를 구분하는 감각을 갖게 됩니다.
- 다음 장의 입력·출력, 파일 처리, 모듈 학습으로 자연스럽게 이어갈 수 있습니다.
1
함수는 ‘자주 쓰는 코드 묶음’이 아니라 ‘의미 있는 작업 단위’입니다
초보자는 함수를 배우기 전까지 같은 코드를 여러 번 복사해서 붙여 넣는 경우가 많습니다. 예를 들어 인사말 출력, 점수 합계 계산, 할인 가격 계산, 특정 형식으로 결과 보여 주기 같은 작업을 프로그램 곳곳에서 반복하게 됩니다. 처음에는 그 방법도 가능해 보이지만, 코드가 길어질수록 수정할 곳이 많아지고 실수 가능성도 커집니다.
함수는 이런 문제를 해결합니다. 핵심은 단순합니다. 하나의 역할을 하는 코드를 이름 붙여 묶어 두고, 필요할 때마다 다시 부르는 것입니다. 그래서 함수는 코드 재사용 도구이면서 동시에, 프로그램의 구조를 읽기 좋게 만드는 문법입니다.
한눈에 보는 함수의 역할
재사용
같은 코드를 여러 번 다시 작성하지 않아도 됩니다.
분리
기능별로 코드를 나누면 읽기와 수정이 쉬워집니다.
의미 부여
함수 이름만 봐도 이 코드가 무슨 일을 하는지 알 수 있습니다.
함수 정의의 가장 기본 형태
파이썬에서는 def 키워드로 함수를 만듭니다. 그리고 함수 이름 뒤에 괄호를 쓰고, 마지막에 콜론을 붙인 뒤, 들여쓰기 안에 실행할 코드를 적습니다.
def say_hello():
print("안녕하세요")
이 함수는 아직 실행된 것이 아닙니다. 지금은 단지 이름이 붙은 기능을 정의해 둔 상태입니다.
함수 문법 구성요소
def : 함수를 만들겠다는 선언
함수 이름 : 기능을 설명하는 이름
괄호() : 입력값이 들어오는 자리
들여쓰기 블록 : 함수가 실제로 할 일
정의와 호출은 다릅니다
STEP 1
함수 만들기
def로 정의
STEP 2
이름 저장
기능이 준비됨
STEP 3
함수 부르기
이름 뒤에 괄호
STEP 4
코드 실행
블록이 동작함
def say_hello():
print("안녕하세요")
say_hello()
say_hello()
위 코드는 함수를 한 번 정의한 뒤 두 번 호출합니다. 따라서 같은 기능을 여러 번 써야 할 때 함수의 진가가 드러납니다.
매개변수: 함수가 받는 입력 자리
함수는 항상 똑같은 일만 하는 것이 아니라, 입력값에 따라 다른 결과를 내게 만들 수도 있습니다. 이때 함수 정의 부분의 괄호 안에 적는 변수를 매개변수(parameter)라고 합니다.
def greet(name):
print(name, "님 반갑습니다")
여기서 name은 함수를 실행할 때 값을 받아오는 자리입니다.
인수: 실제로 넣는 값
함수를 호출할 때 실제로 넣는 값을 인수(argument)라고 합니다. 초보자는 매개변수와 인수를 자주 헷갈리지만, 쉽게 말하면 “받는 자리”와 “실제로 넣는 값”의 차이입니다.
greet("민수")
greet("지영")
호출할 때마다 다른 값을 넣을 수 있으므로, 하나의 함수로 여러 상황을 처리할 수 있습니다.
매개변수와 인수, 헷갈리지 않게 정리하기
매개변수
함수 정의에 적는 변수
def add(a, b):
return a + b
인수
함수 호출에 넣는 실제 값
add(3, 5)
즉 a, b는 매개변수이고, 3, 5는 인수입니다. 용어가 헷갈린다면 “함수 정의 안”과 “함수 호출 때”로 구분해 기억하면 됩니다.
return: 계산한 값을 함수 밖으로 돌려주기
초보자는 함수 안에서 print()만 사용하고 끝내는 경우가 많습니다. 하지만 실제로는 함수가 계산한 결과를 밖으로 돌려주어야 다음 계산에 다시 활용할 수 있습니다. 그때 쓰는 것이 return입니다.
def add(a, b):
result = a + b
return result
num = add(10, 20)
print(num)
이 함수는 두 수를 더한 결과를 반환하고, 그 결과를 num 변수에 저장합니다.
print와 return의 차이
print() : 화면에 보여 주기
return : 함수 바깥으로 값 보내기
보이는 것과 돌려주는 것은 다릅니다. 함수 학습에서 가장 중요한 분기점 중 하나입니다.
print 함수와 return 함수의 차이를 코드로 보기
출력만 하는 함수
def show_sum(a, b):
print(a + b)
화면에는 결과가 보이지만, 다른 계산에 바로 쓰기는 어렵습니다.
값을 돌려주는 함수
def get_sum(a, b):
return a + b
result = get_sum(3, 4)
print(result * 10)
반환값을 다시 저장하거나 다른 연산에 연결할 수 있습니다.
함수는 입력 → 처리 → 출력의 흐름으로 이해하면 쉽습니다
INPUT
값 받기
매개변수로 입력
PROCESS
계산하기
함수 내부 로직 실행
OUTPUT
결과 보내기
return으로 반환
def square(number):
result = number * number
return result
이 함수는 하나의 숫자를 입력받아 제곱한 결과를 반환합니다. 함수는 결국 작은 기계처럼 “값을 넣으면 결과를 내는 구조”로 이해할 수 있습니다.
인수를 여러 개 받는 함수
def introduce(name, age):
print(name, "님의 나이는", age, "세입니다")
introduce("민수", 20)
매개변수가 여러 개이면 호출할 때도 그 순서에 맞게 값을 넣어야 합니다.
반환값을 활용하는 함수
def multiply(a, b):
return a * b
answer = multiply(4, 5)
print(answer)
결과를 변수에 담아 두면 이후의 계산이나 조건문에 다시 활용할 수 있습니다.
짧은 종합 예제: 할인 가격 계산 함수 만들기
def get_discount_price(price, discount_rate):
discount = price * discount_rate
final_price = price - discount
return final_price
apple_price = get_discount_price(10000, 0.1)
print("할인 후 가격:", apple_price)
이 예제에는 함수의 중요한 요소가 거의 다 들어 있습니다. 값을 입력받고, 내부에서 계산하고, 마지막에 결과를 반환합니다. 이런 구조를 이해하면 이후에는 평균 계산, 점수 판정, 문자열 가공 등 다양한 기능을 직접 함수로 만들 수 있습니다.
초보자가 자주 하는 실수 1
def say_hello()
print("안녕하세요")
함수 정의 끝에는 반드시 콜론 : 이 필요합니다. 들여쓰기 역시 빠지면 안 됩니다.
초보자가 자주 하는 실수 2
def add(a, b):
print(a + b)
result = add(3, 4)
print(result)
화면에는 7이 보이지만 result에는 저장되지 않습니다. 왜냐하면 이 함수는 반환값이 없기 때문입니다. 계산 결과를 저장하려면 return이 필요합니다.
초보자가 자주 하는 실수 3
def greet(name):
print(name, "님 반갑습니다")
greet()
함수가 값을 받도록 만들어졌다면, 호출할 때도 그 수만큼 인수를 넣어야 합니다. 필요한 값이 빠지면 오류가 발생합니다.
올바른 수정 예시
def greet(name):
print(name, "님 반갑습니다")
greet("민수")
함수 정의와 호출이 서로 맞아야 한다는 점을 항상 확인해야 합니다.
함수 사고 흐름 한눈에 보기
STEP 1
역할 정하기
이 함수가 무엇을 할지 한 문장으로 정합니다.
STEP 2
입력 정하기
어떤 값을 받아야 하는지 매개변수를 결정합니다.
STEP 3
처리하기
함수 내부에서 계산, 조건 판단, 반복을 수행합니다.
STEP 4
결과 보내기
필요하다면 return으로 값을 돌려줍니다.
이 장의 핵심 요약
함수는 하나의 역할을 하는 코드를 묶어 재사용 가능하게 만든다.
함수는 def로 정의하고, 이름 뒤에 괄호를 붙여 호출한다.
매개변수는 받는 자리, 인수는 실제로 넣는 값이다.
print는 보여 주기, return은 결과를 돌려주기다.
체크리스트
□ 함수 정의와 함수 호출의 차이를 설명할 수 있다.
□ 매개변수와 인수의 차이를 구분할 수 있다.
□ return을 사용해 계산 결과를 돌려주는 함수를 만들 수 있다.
□ print 함수와 return 함수의 목적 차이를 이해했다.
미니 연습문제
- 자신의 이름을 받아 “OO님 환영합니다”를 출력하는 함수를 만들어 보세요.
- 두 수를 입력받아 더한 결과를 return하는 함수를 작성해 보세요.
- 숫자 하나를 입력받아 짝수인지 아닌지 판별하는 함수를 만들어 보세요.
Next Chapter
09장에서는 입력과 출력, 그리고 파일 처리의 기초로 넘어가 사용자의 값 입력과 데이터 저장 흐름을 다루게 됩니다.
함수로 기능을 정리했다면, 다음 장에서는 그 기능이 실제로 데이터를 받고 내보내는 흐름을 배웁니다.
'학습 자료 글 > 파이썬 시작하기' 카테고리의 다른 글
| [파이썬 기초 시리즈 10]파일 처리 기초편 (0) | 2026.03.24 |
|---|---|
| [파이썬 기초 시리즈 9]입력과 출력 기초편 (1) | 2026.03.24 |
| [파이썬 기초 시리즈 7]반복문 · while · for · range · break · continue · 순회 감각 (0) | 2026.03.23 |
| [파이썬 기초 시리즈 6]불 자료형과 조건문 기초편 (0) | 2026.03.23 |
| [파이썬 기초 시리즈 5]딕셔너리 · 집합 · 키와 값 · 중복 제거 · 검색과 집합 연산 (0) | 2026.03.23 |