Python함수와 모듈

args, kwargs와 함수 인자 모델

위치 인수, 키워드 인수, 가변 인수, 키워드 전용 인수까지 Python 함수 인자 모델을 한 번에 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

python
def greet(name, *, title="Student", **extra):
    return f"{title} {name}"

def add_all(*numbers):
    return sum(numbers)

설명

  • Python 함수는 위치 인수와 키워드 인수를 모두 지원합니다.
  • *args는 여러 위치 인수를 튜플로 받고, **kwargs는 여러 키워드 인수를 딕셔너리로 받습니다.
  • *를 함수 시그니처 안에 두면 그 뒤 매개변수는 키워드로만 전달되도록 강제할 수 있습니다.
  • 인자 모델을 잘 설계하면 함수 호출이 더 명확해지고 실수를 줄이기 쉽습니다.

짧은 예제

python
def report(name, score, *, passed=True):
    status = "PASS" if passed else "FAIL"
    return f"{name}: {score} ({status})"

print(report("Mina", 88, passed=True))

빠른 정리

문법역할
name일반 매개변수
*args여러 위치 인수 수집
**kwargs여러 키워드 인수 수집
*, flag=True키워드 전용 매개변수

공식 참고: More on Defining Functions

주의할 점

*args, **kwargs는 유연하지만 함수 인터페이스를 흐리게 만들 수도 있습니다. 자주 쓰는 인자는 명시적으로 선언하고, 정말 가변적인 경우에만 사용하는 편이 좋습니다.