args, kwargs 가변인자와 가변 키워드 인자

args, kwargs 얘네는 사실 그냥 이름이다. 파라미터 앞에 붙어있는 *가 훨씬 중요하다. => Packing

*args는 우리가 다른 언어에서도 볼 수 있는 가변인자에 대한 저시기를 보여준다.

def print_args(*args):
    print('args: ', args)
    for x in args:
        print(x)

print_args(100, True, 'leehojun')

**kwargs는 신기하게 *이 두 번이나 붙었네? 왜일까? => 바로 dict를 받기 위해서이다. default argument를 사용하여 함수를 호출하게 되었을 경우, kwargsdict 타입이 되어 이름과 값 쌍으로 인수가 전달이 된다. 일반 인수와 혼용하고 싶다면, 일반인수의 이름을 붙이던가, 함수선언시 일반파라미터를 가변인자 왼쪽에 넣던가 해야한다.

def print_kwargs(num, **kwargs):
    print('num: ', num)
    print('kwargs: ', kwargs)
    for i in kwargs:
        print(i)

print_kwargs(100, name='최승현', age=10)