728x90

파이썬은 간결하고 직관적인 문법으로 유명합니다. 그 중에서도 함수(Function)는 코드 재사용성과 유지보수성을 높이는 핵심 도구로, 초보자부터 고급 개발자까지 모두에게 필수적인 개념입니다. 이 글에서는 파이썬 함수의 기본 구조부터 실전 사용법, 그리고 자주 사용하는 고급 패턴까지 체계적으로 다룹니다.
1. 함수란 무엇인가?
함수란 입력값(매개변수)을 받아 처리한 뒤, 결과값(반환값)을 출력하는 코드 블록입니다. 반복적인 작업을 줄이고, 논리적인 단위로 코드를 분리해 가독성과 생산성을 높입니다.
기본 구조:
def 함수이름(매개변수):
실행할 코드
return 반환값
예제:
def greet(name):
return f"안녕하세요, {name}님!"
print(greet("마르티노"))
2. 함수의 구성 요소
| 요소 | 설명 | 예시 |
|---|---|---|
| def | 함수 정의 키워드 | def my_function(): |
| 함수명 | 식별자 역할. 소문자+언더스코어 추천 | calculate_total |
| 매개변수 | 입력값. 함수 안에서 사용됨 | (a, b) |
| return | 결과값을 반환 | return result |
3. 다양한 매개변수의 종류
- 기본 매개변수: 값이 전달되지 않으면 기본값 사용
- 가변 인자 (*args): 여러 개의 인수를 튜플로 받음
- 키워드 가변 인자 (**kwargs): 키-값 쌍을 딕셔너리로 받음
def introduce(name, age=20):
print(f"{name}님은 {age}살입니다.")
introduce("지민")
introduce("철수", 25)
def print_args(*args):
for arg in args:
print(arg)
print_args("A", "B", "C")
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_kwargs(name="유나", age=23)
4. 반환값의 다양성
함수는 하나 이상의 값을 반환할 수 있으며, 이때 튜플 형태로 반환됩니다.
def calc(a, b):
return a + b, a * b
sum_val, prod_val = calc(3, 4)
print("합:", sum_val)
print("곱:", prod_val)
5. 람다 함수 (익명 함수)
lambda 키워드를 사용하여 한 줄로 함수를 정의할 수 있습니다. 보통 간단한 연산이나 map(), filter() 등과 함께 사용됩니다.
square = lambda x: x ** 2
print(square(5)) # 출력: 25
numbers = [1, 2, 3, 4]
squares = list(map(lambda x: x**2, numbers))
print(squares)
6. 함수와 스코프(Scope)
변수는 그 선언된 위치에 따라 유효 범위가 달라집니다.
- 지역 변수(Local): 함수 내부에서 선언
- 전역 변수(Global): 함수 외부에서 선언
x = 10 # 전역 변수
def func():
x = 5 # 지역 변수
print("함수 내 x:", x)
func()
print("함수 밖 x:", x)
7. 고급 패턴: 함수 안의 함수
파이썬에서는 함수 내부에 또 다른 함수를 정의할 수 있으며, 이를 통해 캡슐화와 클로저 구현이 가능합니다.
def outer(msg):
def inner():
print(f"내부 함수에서 출력: {msg}")
return inner
my_func = outer("안녕")
my_func()
8. 데코레이터 (Decorator)
함수에 기능을 동적으로 추가할 때 사용됩니다.
def decorator_func(func):
def wrapper():
print("함수 실행 전")
func()
print("함수 실행 후")
return wrapper
@decorator_func
def say_hello():
print("Hello!")
say_hello()
9. 함수 정리 요약 표
| 종류 | 설명 | 사용 예시 |
|---|---|---|
| 일반 함수 | def 키워드로 정의 | def greet(): |
| 람다 함수 | 한 줄로 정의되는 익명 함수 | lambda x: x+1 |
| 재귀 함수 | 자기 자신을 호출 | def fact(n): return n*fact(n-1) |
| 데코레이터 | 기존 함수에 기능 추가 | @decorator |
10. 결론
함수는 파이썬 프로그래밍에서 가장 강력한 기능 중 하나입니다. 반복을 줄이고, 코드의 재사용성과 구조화를 도와주며, 유지보수를 쉽게 만듭니다. 초보자는 다양한 예제를 직접 구현해보며 함수의 동작 원리를 익히고, 점차적으로 고급 패턴까지 도전해보길 추천합니다.
참고 자료
- Python 공식 문서: https://docs.python.org/ko/3/tutorial/controlflow.html#defining-functions
- Real Python 함수 가이드: https://realpython.com/defining-your-own-python-function/
728x90
'Artificial Intelligence > 60. Python' 카테고리의 다른 글
| [PYTHON] 파이썬 환경설정 완벽 가이드 : 개발을 위한 최적 세팅 (0) | 2025.07.20 |
|---|---|
| [PYTHON] 파이썬 설치 가이드 : 최신 설치 법 완벽 정리 (0) | 2025.07.20 |
| [PYTHON] 파이썬 자료형 완벽 가이드 : 기본부터 심화까지 (0) | 2025.07.20 |
| [PYTHON] 파이썬 기본 문법 : 초보자를 위한 완전 정복 가이드 (0) | 2025.07.20 |
| [PYTHON] 파이썬 기본 문법 완벽 가이드: 입문자를 위한 첫걸음 (0) | 2025.07.20 |