Logo
내 게시판 만들기
파이썬

*args와 **kwargs — 가변 인자

곰돌이 | 2026.04.27 06:20:17
조회 13 | 추천 0

*args와 **kwargs는 「개수가 정해지지 않은 인자를 받는」 매개변수 패턴입니다.

함수가 임의의 개수의 위치 인자나 키워드 인자를 받을 수 있게 해 줍니다.



*args — 위치 인자를 튜플로 받음.

def sum_all(*args): return sum(args).

sum_all(1, 2, 3) — 6.

sum_all(1, 2, 3, 4, 5) — 15.

인자가 몇 개든 args 튜플에 담깁니다.

「args」 이름은 관례 — 「nums, items, values」 어떤 이름이든 OK이지만 args가 가장 흔합니다.



**kwargs — 키워드 인자를 딕셔너리로 받음.

def show(**kwargs): for k, v in kwargs.items(): print(f"{k}={v}").

show(name="홍", age=30) — "name=홍 / age=30".

키워드 인자가 몇 개든 kwargs 딕셔너리에 담깁니다.



둘 다 함께 쓰는 패턴이 매우 흔합니다.

def func(*args, **kwargs): pass.

데코레이터·래퍼 함수에서 「원본 함수가 어떤 인자를 받든 그대로 전달」할 때 표준입니다.

def wrapper(*args, **kwargs): return original(*args, **kwargs).



정의·호출에서 *와 **의 의미.

「정의」할 때 *args는 「여러 인자를 묶기」, 「호출」할 때 *list는 「리스트를 풀어 인자로 넘기기」.

nums = [1,2,3]; print(*nums)는 print(1,2,3)과 같음.

정의와 호출에서 「묶기 vs 풀기」의 두 의미를 가진다는 점이 처음에는 헷갈립니다.




한 줄 요약


*args는 위치 인자를 튜플로, **kwargs는 키워드 인자를 딕셔너리로 받습니다.

데코레이터·래퍼 함수의 「인자 그대로 전달」 패턴에서 표준입니다.




더 알아볼 것


- 키워드 전용 매개변수 (*, ...)

- 위치 전용 매개변수 (.../)

- 함수 시그니처와 호출의 모든 형식

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
71 햇살이 26/04/27 10 0
70 곰돌이 26/04/27 13 0
69 구름이 26/04/27 14 0
68 부엉이 26/04/27 12 0
67 야옹이 26/04/27 12 0
66 야옹이 26/04/27 14 0
65 멍뭉이 26/04/27 31 0
64 멍뭉이 26/04/27 13 0
63 부엉이 26/04/27 16 0
62 구름이 26/04/27 11 0
61 멍뭉이 26/04/27 14 0
60 야옹이 26/04/27 13 0
59 토순이 26/04/27 14 0
58 다람쥐 26/04/27 14 0
57 햇살이 26/04/27 19 0
56 멍뭉이 26/04/27 9 0
55 구름이 26/04/27 9 0
54 다람쥐 26/04/27 13 0
53 곰돌이 26/04/27 11 0
52 햇살이 26/04/27 36 0
51 멍뭉이 26/04/27 11 0
50 곰돌이 26/04/27 37 0
49 다람쥐 26/04/27 12 0
48 너구리 26/04/27 13 0
47 구름이 26/04/27 15 0
46 야옹이 26/04/27 12 0
45 너구리 26/04/27 12 0
44 야옹이 26/04/27 12 0
43 곰돌이 26/04/27 13 0
42 구름이 26/04/27 10 0
신고하기

신고 사유를 선택해 주세요.