Python 함수 정의: def 키워드로 코드를 묶다
def 키워드 문법, 매개변수, 반환값, 독스트링까지 — Python 함수 정의의 모든 것을 예제 중심으로 설명합니다.
지난 글에서 루프의 함정을 다뤘다. 이제 코드를 재사용 가능한 단위로 묶는 핵심 도구인 함수를 살펴본다. 함수를 잘 쓰는 것만으로도 코드의 가독성과 유지보수성이 극적으로 향상된다.
함수란 무엇인가
함수는 이름을 붙인 코드 블록이다. 한 번 정의해 두면 어디서든 이름으로 호출할 수 있고, 입력값을 받아 처리한 결과를 돌려준다. Python에서 함수는 def 키워드로 정의한다.
# 가장 단순한 함수
def say_hello():
print("Hello, World!")
say_hello() # Hello, World!
def 문법 전체 구조
def 다음에 함수 이름, 괄호 안에 매개변수 목록, 콜론(:)으로 헤더를 마친다. 이후 들여쓰기된 블록이 함수 본문이다.
def 함수이름(매개변수1, 매개변수2):
"""독스트링 (선택사항)"""
# 본문
return 결과값
이름은 snake_case를 사용하는 것이 파이썬 스타일이다.
매개변수와 인수
**매개변수(parameter)**는 함수 정의에 나타나는 변수명, **인수(argument)**는 호출 시 전달하는 실제 값이다.
def add(a, b): # a, b → 매개변수
return a + b
result = add(3, 4) # 3, 4 → 인수
print(result) # 7
기본값 인수
매개변수에 =로 기본값을 지정하면 호출 시 생략할 수 있다.
def power(base, exp=2):
return base ** exp
print(power(3)) # 9 (exp=2 기본값 사용)
print(power(2, 10)) # 1024
기본값이 있는 매개변수는 반드시 기본값이 없는 매개변수 뒤에 와야 한다.
# 오류!
def wrong(a=1, b): # SyntaxError
pass
# 올바름
def correct(a, b=1):
pass
반환값 — return
return 키워드 뒤의 표현식이 호출자에게 전달된다. return이 없거나 값 없이 return만 쓰면 None을 반환한다.
def greet(name, greeting="Hello"):
"""이름에게 인사 메시지를 반환한다."""
message = greeting + ", " + name + "!"
return message
msg = greet("철수")
print(msg) # Hello, 철수!
print(greet("영희", "안녕")) # 안녕, 영희!
독스트링(Docstring)
함수 첫 줄에 삼중 따옴표("""...""")로 작성하는 문서 문자열이다. help() 함수나 IDE에서 활용된다.
def circle_area(radius):
"""
원의 넓이를 반환한다.
Args:
radius (float): 반지름 (양수)
Returns:
float: 넓이 (π × r²)
"""
import math
return math.pi * radius ** 2
help(circle_area) # 독스트링 출력
반환값이 없는 함수
부수 효과(출력, 파일 쓰기 등)만 수행하는 함수는 return을 생략한다. 이 경우 반환값은 None이다.
def log(message):
print(f"[LOG] {message}")
result = log("시작")
print(result) # None
함수는 객체다
Python에서 함수는 **일급 객체(first-class object)**다. 변수에 할당하거나 다른 함수에 인수로 전달할 수 있다.
def double(x):
return x * 2
fn = double # 함수 객체를 변수에 할당
print(fn(5)) # 10
nums = [1, 2, 3]
print(list(map(double, nums))) # [2, 4, 6]
정리
| 구성 요소 | 설명 |
|---|---|
def | 함수 정의 키워드 |
| 함수 이름 | snake_case, 동사 권장 |
| 매개변수 | 입력값 자리, 기본값 지정 가능 |
| 독스트링 | 선택사항, 문서화 목적 |
return | 반환값 지정, 없으면 None |
다음 글: 위치 인수와 키워드 인수: Python 인수 전달 방식의 기본
읽어주셔서 감사합니다. 😊