함수 사용하기

Tasker_Jang·2026년 2월 24일

1. 함수란?

파이썬에서 함수(function)란 특정 용도의 코드를 한 곳에 모아 놓은 것입니다. 반복되는 코드를 함수로 만들어두면 재사용이 쉬워지고, 코드의 가독성도 높아집니다.


2. 함수 만들기와 호출하기

def 키워드에 함수 이름을 지정하고 ()와 콜론 :을 붙인 뒤, 다음 줄에 원하는 코드를 작성합니다. 이때 코드는 반드시 들여쓰기를 해야 합니다.

# 함수 정의
def greet():
    print("안녕하세요!")
    print("파이썬 함수입니다.")

# 함수 호출
greet()
# 안녕하세요!
# 파이썬 함수입니다.

이렇게 함수를 사용하는 것을 "함수를 호출한다"고 표현합니다.

⚠️ 함수를 만들기 전에 먼저 호출하면 에러가 발생합니다. 파이썬은 코드를 위에서 아래로 순차적으로 실행하기 때문에, 함수 정의가 호출보다 위에 있어야 합니다.

# ❌ 함수 정의 전에 호출 → NameError
# greet()

# ✅ 함수 정의가 먼저
def greet():
    print("안녕하세요!")

greet()

3. 매개변수 — 함수에 값 전달하기

함수에서 값을 받으려면 () 괄호 안에 변수 이름을 지정합니다. 이 변수를 매개변수(parameter)라고 합니다.

# 매개변수가 하나인 함수
def greet(name):
    print(f"안녕하세요, {name}님!")

greet("홍길동")  # 안녕하세요, 홍길동님!

매개변수를 여러 개 지정할 수도 있습니다.

# 매개변수가 여러 개인 함수
def add(a, b):
    print(f"{a} + {b} = {a + b}")

add(3, 5)  # 3 + 5 = 8

💡 함수를 호출할 때 전달하는 값은 인수(argument)라고 합니다. 매개변수는 함수를 정의할 때, 인수는 함수를 호출할 때 사용하는 용어입니다.


4. 독스트링 — 함수에 설명 달기

함수 본문 첫 줄에 큰따옴표 세 개(""")로 감싼 문자열을 넣으면 독스트링(docstring)이 됩니다. 함수의 용도를 설명하는 역할을 하며, help() 함수로 확인할 수 있습니다.

def add(a, b):
    """두 수를 더한 결과를 반환하는 함수입니다.

    Args:
        a: 첫 번째 숫자
        b: 두 번째 숫자

    Returns:
        두 수의 합
    """
    return a + b

# 독스트링 확인
help(add)

5. return — 값 반환하기

return은 함수 바깥으로 값을 반환합니다. 반환된 값은 변수에 저장하여 활용할 수 있습니다.

# return으로 값 반환
def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 8

여러 값 반환하기

함수에서 값을 여러 개 반환할 때는 값이나 변수를 콤마로 구분합니다. 이때 실제로는 튜플이 반환됩니다.

# 여러 값 반환 (실제로는 튜플 반환)
def get_min_max(numbers):
    return min(numbers), max(numbers)

# 튜플로 받기
result = get_min_max([3, 1, 7, 2, 9])
print(result)       # (1, 9)
print(type(result)) # <class 'tuple'>

# 언패킹으로 각각 받기
min_val, max_val = get_min_max([3, 1, 7, 2, 9])
print(min_val)  # 1
print(max_val)  # 9

return의 또 다른 역할 — 함수 즉시 종료

return은 값을 반환하는 것 외에도 함수를 즉시 종료하는 역할을 합니다. return 아래의 코드는 실행되지 않습니다.

def check_age(age):
    if age < 0:
        return  # 값 없이 return하면 None을 반환하고 함수 종료
    print(f"나이: {age}")

check_age(-1)  # 아무것도 출력되지 않음
check_age(25)  # 나이: 25

6. 프레임과 콜 스택

프레임이란?

프레임(frame)이란 메모리에서 함수와 함수에 속한 변수가 저장되는 독립적인 공간입니다. 함수가 호출될 때마다 새로운 프레임이 생성되고, 함수가 끝나면 프레임이 사라집니다.

전역 프레임(global frame)은 파이썬 스크립트 전체에서 접근할 수 있는 공간으로, 함수 바깥에서 만든 변수가 이곳에 저장됩니다.

콜 스택 — 함수의 호출 구조

함수는 스택(stack) 방식으로 호출됩니다. 스택은 후입선출(LIFO) 구조로, 가장 나중에 호출된 함수가 가장 먼저 종료됩니다.

def func_a():
    print("A 시작")
    func_b()           # func_b 호출 → 스택에 추가
    print("A 끝")

def func_b():
    print("B 시작")
    func_c()           # func_c 호출 → 스택에 추가
    print("B 끝")

def func_c():
    print("C 시작")
    print("C 끝")      # func_c 종료 → 스택에서 제거

func_a()

위 코드의 콜 스택 변화를 시각화하면 다음과 같습니다.

profile
ML Engineer 🧠 | AI 모델 개발과 최적화 경험을 기록하며 성장하는 개발자 🚀 The light that burns twice as bright burns half as long ✨

0개의 댓글