Python 함수(Function)란?
함수(Function)는 특정 작업을 하나의 묶음으로 만들어 필요할 때마다 재사용할 수 있는 코드입니다. 같은 코드를 여러 번 작성하지 않아도 되므로 코드의 중복을 줄이고 유지보수를 쉽게 만들어 줍니다.
Python에서는 def 키워드를 사용해 함수를 정의합니다. 함수는 프로그램을 구조적으로 작성하는 데 필수적인 요소이며, 작은 프로그램부터 대규모 프로젝트까지 폭넓게 활용됩니다.

함수 만들기
가장 기본적인 함수는 이름과 실행할 코드만 정의하면 됩니다.
def hello():
print("Hello, Python!")
hello()
실행 결과
Hello, Python!
설명
def로 함수를 정의합니다.- 함수 이름 뒤에는 괄호
()를 작성합니다. - 함수를 실행하려면 함수 이름 뒤에
()를 붙여 호출합니다.
매개변수(Parameter)
매개변수는 함수에 값을 전달하기 위한 변수입니다.
def greet(name):
print(f"안녕하세요, {name}님!")
greet("홍길동")
실행 결과
안녕하세요, 홍길동님!
매개변수를 사용하면 하나의 함수로 다양한 입력을 처리할 수 있습니다.
반환값(return)
return은 함수의 실행 결과를 호출한 곳으로 돌려줍니다.
def add(a, b):
return a + b
result = add(10, 20)
print(result)
실행 결과
30
반환값을 사용하면 계산 결과를 다른 함수나 변수에서 다시 활용할 수 있습니다.
기본값(Default Parameter)
매개변수에 기본값을 지정하면 인수를 생략해도 함수를 호출할 수 있습니다.
def greet(name="방문자"):
print(f"안녕하세요, {name}님!")
greet()
greet("김철수")
실행 결과
안녕하세요, 방문자님!
안녕하세요, 김철수님!
여러 개의 반환값
Python 함수는 여러 값을 한 번에 반환할 수 있습니다.
def calculate(a, b):
return a + b, a - b
sum_value, diff_value = calculate(10, 5)
print(sum_value)
print(diff_value)
실행 결과
15
5
가변 위치 인자(*args)
전달되는 인자의 개수가 일정하지 않을 때 *args를 사용합니다.
def total(*numbers):
print(sum(numbers))
total(1, 2, 3)
total(10, 20, 30, 40)
실행 결과
6
100
| 문법 | 설명 |
|---|---|
| *args | 위치 인자를 튜플로 전달 |
| **kwargs | 키워드 인자를 딕셔너리로 전달 |
가변 키워드 인자(**kwargs)
키와 값 형태의 인자를 여러 개 받을 때 사용합니다.
def profile(**info):
for key, value in info.items():
print(key, value)
profile(name="홍길동", age=30, job="Developer")
실행 결과
name 홍길동
age 30
job Developer
lambda 함수
lambda는 이름이 없는 간단한 함수를 만들 때 사용합니다.
multiply = lambda a, b: a * b
print(multiply(3, 4))
실행 결과
12
간단한 계산이나 정렬 기준을 지정할 때 자주 사용됩니다.
재귀 함수
재귀 함수는 함수가 자기 자신을 호출하는 함수입니다.
def factorial(n):
if n == 1:
return 1
return n * factorial(n - 1)
print(factorial(5))
실행 결과
120
재귀 함수는 트리 탐색이나 수학적 계산에서 유용하지만 종료 조건을 반드시 작성해야 합니다.
지역 변수와 전역 변수
| 구분 | 설명 |
|---|---|
| 지역 변수(Local) | 함수 내부에서만 사용 가능 |
| 전역 변수(Global) | 프로그램 전체에서 사용 가능 |
message = "전역 변수"
def show():
message = "지역 변수"
print(message)
show()
print(message)
실행 결과
지역 변수
전역 변수
실무에서 함수 활용 사례
| 분야 | 활용 예시 |
|---|---|
| 웹 개발 | 회원 인증 기능 |
| 자동화 | 파일 처리 함수 |
| 데이터 분석 | 데이터 전처리 함수 |
| API 개발 | 요청 처리 함수 |
| 게임 개발 | 캐릭터 이동 및 공격 기능 |
초보자가 자주 하는 실수
return을 작성하지 않아 결과가None이 되는 경우- 함수를 정의만 하고 호출하지 않는 경우
- 매개변수 개수와 전달한 인자 개수가 맞지 않는 경우
- 지역 변수와 전역 변수의 범위를 혼동하는 경우
- 재귀 함수에서 종료 조건을 작성하지 않아 오류가 발생하는 경우
함수 작성 팁
- 함수는 하나의 역할만 수행하도록 작성합니다.
- 이름만 보고도 기능을 알 수 있도록 명확한 함수명을 사용합니다.
- 반복되는 코드는 함수로 분리해 재사용합니다.
- 복잡한 함수는 여러 개의 작은 함수로 나누는 것이 좋습니다.
- 필요하다면 타입 힌트를 추가해 가독성을 높일 수 있습니다.
def add(a: int, b: int) -> int:
return a + b
타입 힌트는 코드의 의도를 명확하게 표현하고 IDE의 자동완성 기능을 활용하는 데 도움이 됩니다.
마무리
함수는 Python 프로그래밍에서 가장 중요한 개념 중 하나입니다. def, 매개변수, return, *args, **kwargs, lambda까지 이해하면 중복 없는 효율적인 코드를 작성할 수 있습니다. 이후 모듈과 패키지를 함께 학습하면 프로젝트를 더욱 체계적으로 관리할 수 있습니다.
FAQ
Q1. 함수와 메서드는 같은 개념인가요?
비슷하지만 다릅니다. 함수는 독립적으로 호출할 수 있고, 메서드는 객체에 속한 함수입니다.
Q2. return은 반드시 작성해야 하나요?
반환할 값이 없다면 생략할 수 있습니다. 이 경우 함수는 자동으로 None을 반환합니다.
Q3. *args와 **kwargs는 언제 사용하나요?
인자의 개수나 이름이 미리 정해져 있지 않은 함수를 만들 때 사용합니다.
Q4. lambda 함수는 언제 사용하는 것이 좋나요?
한 줄로 표현할 수 있는 간단한 연산이나 정렬 기준을 지정할 때 유용합니다.
Q5. 재귀 함수와 반복문 중 어떤 것을 선택해야 하나요?
재귀는 문제를 자연스럽게 표현할 수 있는 경우에 적합하지만, 일반적인 반복 작업은 for나 while이 더 이해하기 쉽고 성능도 좋은 경우가 많습니다.
함께 읽으면 좋은 글
'python' 카테고리의 다른 글
| Python 딕셔너리(Dictionary) (0) | 2026.07.09 |
|---|---|
| Python 리스트(List) (0) | 2026.07.08 |
| Python 반복문(for, while) (0) | 2026.07.06 |
| Python 조건문(if, elif, else) (0) | 2026.07.03 |
| Python 변수와 자료형 (0) | 2026.07.02 |