args
: Positional Argument (포지셔널 아규먼트)
함수에 정의한 순서대로 인자를 보내는 방법으로, 인수의 순서를 지켜야 한다.
kwargs
: keyword Argument
인수를 전달할 때 매개변수명을 명시하는 방법으로, 순서가 바뀌어도 상관없다.
가변인자 전달
인수를 받을 때 인수의 개수가 가변적인 경우 *args, **kwargs를 사용한다.
# args : n개의 인자를 받고 싶다면
def sum_n_ints(*args):
return sum(args)
#kwargs
def sum_in_ints(**kwargs):
print(kwargs)
print(tytpe(kwargs))
return sum(kwargs.values())
>>> sum_n_ints(a=1, b=2, c=3)
{'a':1, 'b': 2, 'c' : 3}
<class 'dict'>
6
같이 사용하기
def sample(*args, **kwargs):
print(type(args)))
print(args)
print(type(kwargs)))
print(kwargs)
>>> sample(1,2,3,4,5, a=1, b=2, c=3)
<class 'tuple'>
(1, 2, 3, 4, 5)
<class 'dict'>
{'a':1, 'b': 2, 'c' : 3}
args, kwargs 하나로 포지셔널, 키워드 아규먼트를 각각 모두 커버하므로, 한 번만 쓰면 된다.
디폴트 값을 가진 키워드 아규먼트를 넣고 싶다면 **kwargs 앞에 작성해야한다.