python

Python 함수(def) 기초와 활용법

bitandwon 2026. 7. 7. 15:23

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