파이썬에서 별표(*) 연산자는 시퀀스나 컬렉션(리스트, 튜플 등)을 위치 인수(position argument)로 언패킹(unpacking)하는 역할을 합니다.
리스트에 담긴 요소들을 함수의 각 위치 매개변수에 순서대로 전달하고 싶을 때, 일일이 인덱싱으로 하나씩 꺼내는 대신 * 연산자를 사용하면 코드를 훨씬 간결하게 작성할 수 있습니다.
사용 예시
아래는 두 수를 곱하는 함수에 리스트의 값을 전달하는 예제입니다.
def multiply(a, b):
return a * b
values = [1, 2]
print(multiply(*values))동작 원리
*values는 리스트를 언패킹하여, 실제로 아래와 같이 실행되는 것과 동일한 효과를 냅니다.
print(multiply(1, 2))
즉, 리스트의 첫 번째 요소인 1은 첫 번째 매개변수 a에, 두 번째 요소인 2는 두 번째 매개변수 b에 자동으로 할당됩니다.
출력 결과
실행하면 다음과 같은 결과를 얻을 수 있습니다.
2
참고 사항
언패킹 시 리스트의 요소 개수와 함수가 받는 매개변수 개수가 일치해야 합니다. 개수가 맞지 않으면 TypeError가 발생합니다.
values = [1, 2, 3] print(multiply(*values)) # TypeError 발생!
또한, 함수 정의 쪽에서 *args 문법을 사용하면 가변 개수의 위치 인수를 받을 수 있어, * 연산자와 함께 유연하게 활용할 수 있습니다.