파이썬 프로그래밍 언어에서 *(별표)와 **(쌍별표)는 사용되는 위치와 문맥에 따라 완전히 다른 기능을 수행합니다. 단순한 곱셈 연산부터 함수의 가변 인자 처리, 이터러블 언패킹까지 그 활용 범위가 매우 넓습니다. 이 글에서는 두 연산자의 주요 사용 사례를 예제 코드와 함께 자세히 살펴보겠습니다.
중위 연산자(Infix Operator)로 사용하기
*가 중위 연산자로 사용되면 숫자들의 수학적 곱셈 결과를 반환합니다. 아래 예제에서는 정수, 실수, 복소수를 각각 곱한 결과를 확인할 수 있습니다.
예제
# 정수 x = 20 y = 10 z = x * y print(z) # 실수 x1 = 2.5 y1 = 5.1 z1 = x1 * y1 print(z1) # 복소수 x2 = 4 + 5j y2 = 5 + 4j z2 = x2 * y2 print(z2)
출력 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
200 12.75 41j
중위 연산자 *는 문자열, 리스트, 튜플 같은 컬렉션을 지정한 횟수만큼 반복하여 확장하는 데에도 활용할 수 있습니다.
예제
str_val = "Point-" print(str_val * 4) num_list = [4, 5, 6] print(num_list * 3) num_tuple = (9, 8, 7) print(num_tuple * 2)
출력 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Point-Point-Point-Point- [4, 5, 6, 4, 5, 6, 4, 5, 6] (9, 8, 7, 9, 8, 7)
전위 연산자(Prefix Operator)로 사용하기
단일 별표(*)는 이름 앞에 붙이는 접두사 형태로도 사용할 수 있습니다. 아래에서는 전위 연산자로 활용되는 대표적인 방법들을 소개합니다.
이터러블 언패킹(Unpacking)
리스트나 튜플 같은 이터러블은 이름 앞에 별표만 붙이면 개별 요소로 펼쳐서 출력하거나 전달할 수 있습니다.
예제
week_days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] print(*week_days)
출력 결과
Mon Tue Wed Thu Fri
가변 개수의 인자 받기
함수 정의 시 매개변수에 단일 별표를 붙이면, 호출할 때 개수에 상관없이 여러 개의 위치 인자를 전달할 수 있습니다. 이때 전달된 값들은 하나의 튜플로 묶여 함수 내부에서 처리됩니다.
예제
def many_sums(*args):
res = 0
# args 튜플을 순회하며 값을 누적
for x in args:
res = res + x
return res
print(many_sums(1, 2))
print(many_sums(11, 21, 30))
print(many_sums(5.5, 0))출력 결과
3 62 5.5
키워드 인자 처리를 위한 ** 사용하기
쌍별표(**)는 키워드 기반 인자를 처리할 때 사용됩니다. 일반적인 개별 값이 아니라 키-값 쌍으로 구성된 딕셔너리 형태로 인자가 전달되며, 함수 내부에서 keys()나 values() 메서드를 통해 접근할 수 있습니다.
예제
def join_keys(**kwargs):
result = ""
# kwargs 딕셔너리의 키들을 순회
for arg in kwargs.keys():
result += arg
return result
def join_values(**kwargs):
result = ""
# kwargs 딕셔너리의 값들을 순회
for arg in kwargs.values():
result += arg
return result
print(join_keys(day1="Mon-", day2="Tue-", day3="Wed-", day4="Thu-"))
print(join_values(day1="Mon-", day2="Tue-", day3="Wed-", day4="Thu-"))출력 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
day1day2day3day4 Mon-Tue-Wed-Thu-
정리하면, *는 곱셈·반복 연산과 가변 위치 인자 처리에, **는 거듭제곱과 키워드 인자 처리에 사용됩니다. 두 연산자의 동작 방식을 정확히 이해해 두면 파이썬 코드를 훨씬 유연하고 간결하게 작성할 수 있습니다.