함수와 예외 처리는 파이썬 프로그래밍에서 코드의 재사용성, 안정성, 가독성을 높이는 데 핵심적인 역할을 한다. 함수를 사용하면 반복되는 코드를 효율적으로 관리할 수 있으며, 예외 처리를 통해 오류 발생 시 프로그램의 예기치 않은 종료를 방지할 수 있다.
이번 글에서는 사용자 정의 함수, 다양한 인자 전달 방식(*args, **kwargs 포함), 그리고 try-except-finally를 활용한 예외 처리까지 폭넓게 살펴보고자 한다. 각 개념은 실습과 예제를 통해 직관적으로 이해할 수 있도록 구성하였다.
1. 함수 (Function)
1-1. 함수란 무엇인가?
함수는 특정 작업을 수행하는 코드 블록에 이름을 붙인 것으로, 필요할 때 호출하여 실행할 수 있다. 코드를 재사용 가능하게 만들며, 프로그램을 더 구조화하고 유지 보수하기 쉽게 만들어 준다.
1-2. 함수의 기본 구조
def 함수이름(매개변수):
실행문
return 반환값
2-3. 실습 예제: 간단한 인사 함수
def greet(name):
return f"Hello, {name}!"
print(greet("Alice")) # 출력: Hello, Alice!
2. 다양한 인자 전달 방식
2-1. 기본 인자 (Default Parameters)
기본값을 지정하면, 호출 시 값을 생략할 수 있다.
def introduce(name, age=20):
print(f"{name} is {age} years old.")
introduce("Tom") # 출력: Tom is 20 years old.
introduce("Anna", 25) # 출력: Anna is 25 years old.
→ 기본값이 설정된 인자는 생략 가능하며, 필요에 따라 재정의할 수 있다.
2-2. 키워드 인자 (Keyword Arguments)
함수 호출 시 인자의 순서를 바꾸더라도, 키워드를 명시하면 정확하게 매칭된다.
def student(name, grade):
print(f"{name}'s grade is {grade}")
student(grade="A", name="Bob") # 출력: Bob's grade is A
2-3. args와 kwargs
- *args: 가변 개수의 위치 인자를 튜플로 전달
- **kwargs: 가변 개수의 키워드 인자를 딕셔너리로 전달
def show_args(*args):
print("Args:", args)
def show_kwargs(**kwargs):
print("Kwargs:", kwargs)
show_args(1, 2, 3) # 출력: Args: (1, 2, 3)
show_kwargs(name="Tom", age=20) # 출력: Kwargs: {'name': 'Tom', 'age': 20}
→ *args, **kwargs는 인자의 개수가 정해지지 않았거나 동적으로 전달되어야 할 때 유용하다.
3. 계산기 함수 만들기 (함수 + 조건문 활용)
조건문과 함수의 조합을 활용하면 보다 복잡한 로직도 깔끔하게 구현할 수 있다.
def calculator(a, b, op):
if op == "+":
return a + b
elif op == "-":
return a - b
elif op == "*":
return a * b
elif op == "/":
return a / b
else:
return "지원하지 않는 연산자입니다."
print(calculator(10, 5, "+")) # 출력: 15
print(calculator(10, 5, "/")) # 출력: 2.0
→ 함수 내부에서 연산자를 기준으로 분기 처리하며, 재사용 가능한 계산 함수가 완성된다.
4. 예외 처리 (try-except-finally)
4-1. 예외 처리의 필요성
실행 중 발생할 수 있는 오류를 사전에 처리함으로써, 프로그램의 갑작스러운 종료를 막고 사용자에게 의미 있는 메시지를 제공할 수 있다.
4-2. 기본 구조
try:
실행할 코드
except 예외종류:
예외 발생 시 실행
finally:
항상 실행되는 블록
실습 예제: 0으로 나누기 처리
def safe_divide(a, b):
try:
result = a / b
except ZeroDivisionError:
return "0으로 나눌 수 없습니다."
finally:
print("나눗셈 시도 완료.")
return result
print(safe_divide(10, 0))
나눗셈 시도 완료.
0으로 나눌 수 없습니다.
→ except 블록에서 오류를 처리하고, finally는 예외 발생 여부와 관계없이 항상 실행된다.
함수와 예외 처리는 프로그래밍의 실용성과 안정성을 책임지는 핵심 기능이다. 함수를 통해 코드를 모듈화하고 재사용할 수 있으며, 다양한 인자 전달 방식을 활용하면 유연한 함수 구성이 가능해진다. 더불어 예외 처리를 통해 예상치 못한 오류를 효과적으로 제어함으로써, 사용자 경험을 개선하고 프로그램의 신뢰성을 높일 수 있다.
오늘의 핵심 정리
| 개념 | 설명 |
| 함수 정의 | def 함수명(매개변수): 로 정의 |
| 기본 인자 | 기본값 설정 가능 |
| *args | 여러 개의 위치 인자를 튜플로 전달 |
| **kwargs | 여러 개의 키워드 인자를 딕셔너리로 전달 |
| try-except | 오류 발생에 대비해 코드 안정성 확보 |
| finally | 예외 발생 여부와 관계없이 항상 실행되는 블록 |
앞으로 함수와 예외 처리에 익숙해진다면, 더욱 견고하고 유지보수가 쉬운 파이썬 프로그램을 작성할 수 있게 될 것이다.
'Develop > Data analysis' 카테고리의 다른 글
| [Python] Day 5: 파이썬 모듈과 파일 입출력 (1) | 2025.09.01 |
|---|---|
| [Python] Day 3: 조건문과 반복문 (3) | 2025.08.06 |
| [Python] Day 2: 리스트, 딕셔너리, 튜플, 집합 (2) | 2025.08.06 |
| [Python] Day 1: Python 기초 문법 (1) | 2025.08.05 |