PYTHON · 함수
함수 정의 & *args & **kwargs
가변 인자와 키워드 인자로 유연한 함수를 설계합니다.
함수입문*args**kwargs기본값/*
핵심 설명
가변 인자와 키워드 인자로 유연한 함수를 설계합니다.
Python code
# 기본 함수
def add(a: int, b: int) -> int:
return a + b
# 기본값 파라미터
def greet(name: str, prefix: str = "안녕하세요") -> str:
return f"{prefix}, {name}!"
# *args — 가변 위치 인자 (튜플로 받음)
def sum_all(*nums: int) -> int:
return sum(nums)
print(sum_all(1, 2, 3, 4, 5)) # 15
# **kwargs — 가변 키워드 인자 (딕셔너리로 받음)
def create_user(name: str, **attrs) -> dict:
return {"name": name, **attrs}
user = create_user("Alice", age=30, role="admin")
# {'name': 'Alice', 'age': 30, 'role': 'admin'}
# / 와 * 파라미터 구분자 (Python 3.8+)
def strict(pos_only: int, /, normal: str, *, kw_only: bool):
pass
# pos_only는 위치 전용, kw_only는 키워드 전용
strict(1, "hi", kw_only=True)
# Unpacking
nums = [1, 2, 3]
print(sum_all(*nums)) # 15
cfg = {"age": 25, "role": "user"}
print(create_user("Bob", **cfg))학습 팁
함수 시그니처에서 / 앞은 위치 전용, * 뒤는 키워드 전용 파라미터입니다. API 설계 시 명확성을 높입니다.
주의할 점
기본값에 가변 객체(list, dict)를 쓰면 모든 호출이 같은 객체를 공유합니다. def f(items=[]): → def f(items=None): items = items or []로 작성하세요.
자주 묻는 질문
함수 정의 & *args & **kwargs란 무엇인가요?
가변 인자와 키워드 인자로 유연한 함수를 설계합니다.
함수 정의 & *args & **kwargs 학습 시 주의할 점은 무엇인가요?
기본값에 가변 객체(list, dict)를 쓰면 모든 호출이 같은 객체를 공유합니다. def f(items=[]): → def f(items=None): items = items or [] 로 작성하세요.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.