[Python] args와 kwargs
*args
매개변수 앞에 *
을 붙이면 입력 값을 모아 tuple
로 만듭니다.
def func(*args):
# args == (1,2,3)
total = 0
for arg in args:
total = total + arg
return total
print(func(1, 2, 3))
# 6
**kwargs
함수의 인수로 key=value
형태가 주어지면 입력 값 전체가 kwargs
라는 dict
에 저장 됩니다.
def func(**kwargs):
print(kwargs)
print(func(x=1))
# {'x': 1}
*args와 **kwargs
*args
와 **kwargs
가 동시에 사용될 경우, 일반적인 입력
은 args의 tuple
로 저장되고 key=value
형태는 kwargs의 dict
로 저장됩니다.
def func(*args, **kwargs):
print(args)
print(kwargs)
func(1, 2, 3, 4, name='foo', age=3)
# (1, 2, 3, 4)
# {'name: 'foo', 'age': 3}
주의사항
키워드 형태의 인수 뒤에 키워드 형태가 아닌 인수는 올수 없습니다.
fun(1, 2, 3 name='foo', age=3, 4)
# File "example.py" line 1
# func(1, 2, 3, name='foo', age=3, 4)
#
# SyntaxError: positional argument follows keyword argument