Home

(파이썬 기초 마스터) 함수 정의(def)와 호출, return의 모든 것 - 코딩하는곰의 친절한 가이드

Published in python
December 26, 2025
3 min read
(파이썬 기초 마스터) 함수 정의(def)와 호출, return의 모든 것 - 코딩하는곰의 친절한 가이드

안녕하세요, 20년 넘게 파이썬과 함께한 ‘코딩하는곰’입니다. 오늘은 파이썬 프로그래밍의 핵심 중의 핵심, 함수(Function)에 대해 깊이 있게 파헤쳐보려고 합니다. 함수는 단순히 코드를 묶는 도구가 아니라, 효율적이고 읽기 쉬운 프로그램을 만드는 설계도의 기본 단위입니다. “def”와 “return”이라는 간단한 키워드 뒤에 숨겨진 강력한 힘을 이해한다면, 여러분의 코딩 실력은 한 단계 도약하게 될 거예요. 초보자분들도 쉽게 따라올 수 있도록, 기본 개념부터 실전 예제까지 차근차근 설명해드리겠습니다.

함수(Function)가 왜 중요한가요? 코드 재사용의 마법

프로그래밍을 하다 보면 똑같은 로직을 반복해서 작성해야 할 때가 많습니다. 예를 들어, 사용자로부터 입력받은 숫자가 짝수인지 홀수인지 판별하는 코드를 프로그램 여러 곳에서 사용해야 한다고 생각해보세요. 함수가 없다면, 같은 코드를 여러 번 복사 붙여넣기 해야 하고, 이는 유지보수를 어렵게 만드는 주범이 됩니다. 여기서 함수가 등장합니다. 함수는 특정 작업을 수행하는 코드 블록을 하나의 단위로 묶어 이름을 붙인 것입니다. 한 번 정의해두면, 프로그램 어디에서든 그 이름만으로 해당 코드를 실행(호출)할 수 있습니다. 이는 ‘코드의 재사용성’을 극대화하고, 프로그램의 구조를 명확하게 만들어 줍니다. 복잡한 문제를 작은 함수들로 나누어 해결하는 방식은 현대 소프트웨어 공학의 기본 원칙이기도 하죠.

함수 정의의 시작, def 키워드

파이썬에서 함수를 만드는(정의하는) 문법은 매우 직관적입니다. 바로 def 키워드를 사용하는 거죠.

def 함수이름(매개변수1, 매개변수2, ...):
"""함수의 설명 (Docstring)"""
# 수행할 코드 블록
return 반환값
  • def: “정의한다(define)“의 약자로, 함수 정의를 시작하겠다는 선언입니다.
  • 함수이름: 함수를 호출할 때 사용할 이름입니다. 변수 이름 규칙과 동일하게 의미 있는 이름을 짓는 것이 좋습니다.
  • 매개변수(Parameters): 함수가 작업을 수행하는 데 필요한 입력값입니다. 괄호 안에 쉼표로 구분하여 작성하며, 필요 없으면 비워둘 수 있습니다.
  • 콜론(:): 함수 정의문의 끝을 나타내며, 반드시 붙여야 합니다. 다음 줄부터는 들여쓰기로 함수의 몸체(Body)가 시작됩니다.
  • Docstring: 함수가 무엇을 하는지 설명하는 문자열입니다. 생략 가능하지만, 가독성과 유지보수를 위해 작성하는 것을 강력히 권장합니다.
  • 코드 블록: 함수가 실제로 수행할 명령어들을 작성하는 공간입니다.
  • return: 함수의 실행 결과를 호출한 곳으로 되돌려줍니다(반환). 반환값이 없으면 생략할 수 있습니다. 간단한 예제를 통해 def의 사용법을 익혀보겠습니다.
def greet():
"""간단한 인사 함수"""
print("안녕하세요! 코딩하는곰입니다.")
# 함수 호출
greet() # 출력: 안녕하세요! 코딩하는곰입니다.

위 예제는 매개변수와 반환값이 없는 가장 기본적인 함수 형태입니다. greet()이라고 호출하면 함수 내부의 print 문이 실행됩니다.

(파이썬 기초 마스터) 함수 정의(def)와 호출, return의 모든 것 - 코딩하는곰의 친절한 가이드
(파이썬 기초 마스터) 함수 정의(def)와 호출, return의 모든 것 - 코딩하는곰의 친절한 가이드


🎮 게임 개발에 관심이 있다면, MySQL/MariaDB GRANT 명령어 완벽 가이드 세부 권한 부여부터 관리까지를 참고해보세요.

함수에 생명을 불어넣는 return

함수가 단순히 메시지를 출력하는 것만으로 끝난다면, 그 활용도는 제한적일 수 있습니다. 함수의 진정한 가치는 입력을 받아 처리하고, 그 결과를 도출해내는 것에 있습니다. 이때 핵심 역할을 하는 것이 return 문입니다. return은 두 가지 중요한 일을 합니다.

  1. 함수의 실행을 종료합니다. return 문을 만나면 함수는 즉시 실행을 멈추고 호출한 곳으로 돌아갑니다.
  2. 결과값을 호출한 곳으로 반환(Return) 합니다. 이 반환값은 변수에 저장하거나, 다른 계산의 일부로 바로 사용할 수 있습니다. return 문이 없다면, 함수는 암묵적으로 None이라는 값을 반환합니다. None은 ‘아무것도 없음’을 의미하는 파이썬의 특별한 값입니다.
def add(a, b):
"""두 숫자의 합을 반환하는 함수"""
result = a + b
return result # a + b의 결과를 호출한 곳으로 반환
def add_no_return(a, b):
"""두 숫자의 합을 계산하지만 반환하지 않는 함수"""
result = a + b
# return 문이 없음
# 함수 호출 및 결과 사용
sum_result = add(5, 3)
print(f"add 함수 결과: {sum_result}") # 출력: add 함수 결과: 8
# 반환값을 변수에 저장하거나 바로 사용 가능
print(f"바로 사용: {add(10, 20)}") # 출력: 바로 사용: 30
no_return_result = add_no_return(5, 3)
print(f"add_no_return 함수 결과: {no_return_result}") # 출력: add_no_return 함수 결과: None

add 함수는 return result를 통해 계산 결과를 반환합니다. 따라서 sum_result = add(5, 3)과 같이 그 결과를 변수에 저장하거나, print(add(10, 20))과 같이 다른 표현식 안에서 바로 사용할 수 있습니다. 반면 add_no_return 함수는 계산은 하지만 return 문이 없어, 호출한 결과는 None이 됩니다.

매개변수(Parameter)와 인자(Argument)의 정확한 이해

함수를 설명할 때 자주 혼동되는 개념이 매개변수와 인자입니다.

  • 매개변수(Parameter): 함수를 정의할 때 괄호 안에 선언하는 변수입니다. 함수 내부에서 사용되는 placeholder(자리 표시자) 같은 역할을 합니다.
  • 인자(Argument): 함수를 호출할 때 실제로 매개변수에 전달하는 구체적인 값입니다.
def introduce(name, age): # 여기서 'name', 'age'가 매개변수
"""자기소개 함수"""
print(f"제 이름은 {name}이고, 나이는 {age}살입니다.")
introduce("곰돌이", 15) # 여기서 "곰돌이", 15가 인자
# 출력: 제 이름은 곰돌이이고, 나이는 15살입니다.

(파이썬 기초 마스터) 함수 정의(def)와 호출, return의 모든 것 - 코딩하는곰의 친절한 가이드
(파이썬 기초 마스터) 함수 정의(def)와 호출, return의 모든 것 - 코딩하는곰의 친절한 가이드


회원가입이나 비밀번호 변경 시 안전한 비밀번호를 빠르게 생성할 수 있는 온라인 도구가 유용합니다.

실전 활용: 다양한 함수 형태 예제로 익히기

이론을 이해했으니, 여러 가지 유형의 함수를 직접 만들어보며 감각을 익혀봅시다. 1. 기본값 매개변수 (Default Parameter) 함수를 호출할 때 특정 인자를 생략하면, 미리 정해둔 기본값이 사용되도록 할 수 있습니다. 이는 함수의 유연성을 크게 높여줍니다.

def order_menu(item, quantity=1, takeout=False):
"""메뉴 주문 함수 (수량과 포장 여부는 기본값 있음)"""
order_text = f"{item} {quantity}개 주문"
if takeout:
order_text += " (포장)"
else:
order_text += " (매장)"
return order_text
print(order_menu("아메리카노")) # quantity=1, takeout=False 기본값 사용
# 출력: 아메리카노 1개 주문 (매장)
print(order_menu("라떼", 2)) # quantity=2 지정, takeout=False 기본값 사용
# 출력: 라떼 2개 주문 (매장)
print(order_menu("샌드위치", 1, True)) # 모든 인자 지정
# 출력: 샌드위치 1개 주문 (포장)

2. 여러 값을 반환하는 함수 (튜플 반환) 파이썬의 함수는 마치 하나의 값만 반환하는 것처럼 보이지만, 실제로는 튜플(Tuple)을 통해 여러 값을 한꺼번에 반환할 수 있습니다.

def calculator(a, b):
"""사칙연산 결과를 모두 반환"""
plus = a + b
minus = a - b
multiply = a * b
divide = a / b if b != 0 else "0으로 나눌 수 없음"
# 쉼표로 구분하여 여러 값 반환 -> 자동으로 튜플로 패킹(Packing)
return plus, minus, multiply, divide
# 결과를 하나의 변수(튜플)로 받기
results = calculator(10, 2)
print(results) # 출력: (12, 8, 20, 5.0)
print(f"덧셈 결과: {results[0]}") # 출력: 덧셈 결과: 12
# 튜플 언패킹(Unpacking)을 이용해 각 결과를 별도 변수에 저장
p, m, mul, d = calculator(20, 4)
print(f"곱셈: {mul}, 나눗셈: {d}") # 출력: 곱셈: 80, 나눗셈: 5.0

3. 도전 과제: 간단한 유틸리티 함수 만들기 지금까지 배운 개념을 총동원하여, 실제 프로그래밍에서 유용하게 쓸 수 있는 함수를 만들어 봅시다.

def create_email(username, domain="gmail.com"):
"""사용자 이름과 도메인으로 이메일 주소를 생성"""
email = f"{username}@{domain}"
return email
def is_palindrome(text):
"""주어진 문자열이 회문(앞뒤가 같은 문자열)인지 확인"""
# 대소문자 구분 없이, 공백 제거 후 비교
processed_text = text.lower().replace(" ", "")
return processed_text == processed_text[::-1] # 슬라이싱으로 문자열 뒤집기
# 활용 예시
print(create_email("codingbear")) # 출력: codingbear@gmail.com
print(create_email("team", "naver.com")) # 출력: team@naver.com
print(is_palindrome("토마토")) # 출력: True
print(is_palindrome("Python")) # 출력: False
print(is_palindrome("A man a plan a canal Panama")) # 출력: True (유명한 회문 문장)

(파이썬 기초 마스터) 함수 정의(def)와 호출, return의 모든 것 - 코딩하는곰의 친절한 가이드
(파이썬 기초 마스터) 함수 정의(def)와 호출, return의 모든 것 - 코딩하는곰의 친절한 가이드


치매 예방과 인지 기능 향상을 위한 앱을 찾고 있다면, AI 기반 힌트와 함께하는 스도쿠 저니를 추천합니다.

정리하자면, 파이썬에서 def로 함수를 정의하고 return으로 값을 반환하는 것은 프로그래밍의 기본기를 다지는 가장 중요한 단계입니다. 오늘 배운 내용—함수의 정의와 호출, 매개변수와 인자, return의 역할, 기본값 매개변수, 다중 반환—을 잘 익혀두세요. 이 개념들은 앞으로 만나게 될 클래스(Class), 데코레이터(Decorator), 제너레이터(Generator) 등 모든 고급 주제의 토대가 됩니다. 처음에는 간단한 함수부터 차곡차곡 만들어보는 연습을 하세요. ‘코딩하는곰’은 여러분의 파이썬 여정을 항상 응원합니다! 궁금한 점이 있다면 댓글로 남겨주세요. 다음 시간에는 함수의 범위(Scope)와 람다(Lambda) 함수에 대해 알아보겠습니다. 함께 성장해요!

두뇌 활성화와 집중력 향상을 위한 게임이 필요하다면, 편안한 분위기의 스도쿠 저니: 크립토 할아버지가 도움이 될 것입니다.









최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기
최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기



다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기
다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기



비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기
비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기




Tags

#developer#coding#python

Share

Previous Article
Vue.js와 Angular 속성 바인딩 완벽 가이드 (src), (disabled) 활용법부터 심화 패턴까지

Related Posts

(파이썬 마스터하기) 코드 재사용의 핵심, 모듈 만들기와 import 사용법 완벽 정리
December 18, 2025
3 min