1. 변수명 앞에 * 붙이기

1) 함수를 정의하면서 인자 앞에 *을 썼을 때

1
2
3
4
5
def func1(arg1: int, *args_tuple: int) -> None:
    for arg in args_tuple:
        print(arg)

func1(1, 2, 3, 4, 5)

함수를 정의하면서 인자 앞에 * 표시를 쓰면, 인자로 전달받은 값들을 하나의 튜플에 담아 그 튜플이 * 표시와 함께 쓰인 그 변수명에 전달되게 된다.

2) 함수를 호출하면서 매개변수 앞에 *을 썼을 때

1
2
3
4
def func2(a: int, b:int, c:int) -> None:
    print(a, b, c)

func2(*[1, 2, 3])

함수를 호출하면서 매개변수 앞에 * 표시를 쓰면, 설사 그 함수가 정의 부분에서 여러 개의 인자를 받더라도 매개변수로 넘길 때는 리스트나 튜플을 쓸 수 있다.

2. 변수명 앞에 ** 붙이기

1
2
3
4
5
def func2(arg1: int, **kwargs_dict: str) -> None:
    for key, value in kwargs_dict.items():
        print(f"key is '${key}' and value is '${value}'")

func2(2, fruit="사과", vegetable="배추")

함수에서 파라미터를 쓰는 부분에 ** 표시와 함께 변수명을 쓰면, 파라미터로 전달받은 값들을 하나의 딕셔너리에 담아 그 딕셔너리가 ** 표시와 함께 쓰인 그 변수명에 전달되게 된다.