본문 바로가기

개념

파이썬(Python)의 인자목록 언패킹(unpacking) 에 대해서

Python에서 함수를 정의할 때 인자 목록 언패킹(unpacking)은 함수에 전달되는 인자들 중에서 리스트, 튜플, 딕셔너리 등과 같은 iterable 객체를 개별적인 인자로 분리하여 전달하는 것을 말합니다.

인자 언패킹은 * 또는 **를 사용하여 구현됩니다. *은 리스트나 튜플 등의 iterable 객체를 인자 목록 언패킹하여 개별적인 인자로 분리합니다. **는 딕셔너리 객체를 인자 목록 언패킹하여 개별적인 키-값 쌍으로 분리합니다.


1. 언패킹을 사용한 함수 정의의 예시

def my_function(*args, **kwargs):
    print("Positional arguments:")
    for arg in args:
        print(arg)

    print("\nKeyword arguments:")
    for key, value in kwargs.items():
        print(f"{key}: {value}")


위 함수에서 *args는 개별 인자로 분리되는 위치 인자를 받습니다. **kwargs는 개별 인자로 분리되는 키-값 쌍으로 구성된 딕셔너리를 받습니다.


2. 언패킹을 사용하여 함수 호출

my_list = [1, 2, 3]
my_dict = {"a": 4, "b": 5, "c": 6}

my_function(*my_list, **my_dict)


위 예시에서 *my_list는 리스트를 인자 목록 언패킹하여 1, 2, 3의 위치 인자로 분리하고, **my_dict는 딕셔너리를 인자 목록 언패킹하여 키-값 쌍으로 분리합니다. 그 결과, my_function 함수는 아래와 같이 호출됩니다.

Positional arguments:
1
2
3

Keyword arguments:
a: 4
b: 5
c: 6


따라서, 인자 목록 언패킹을 사용하면 함수에 iterable 객체를 전달하고자 할 때 매우 편리하게 사용할 수 있습니다.