Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 별표(*)와 쌍별표(**) 활용법 총정리

파이썬 프로그래밍 언어에서 *(별표)와 **(쌍별표)는 사용되는 위치와 문맥에 따라 완전히 다른 기능을 수행합니다. 단순한 곱셈 연산부터 함수의 가변 인자 처리, 이터러블 언패킹까지 그 활용 범위가 매우 넓습니다. 이 글에서는 두 연산자의 주요 사용 사례를 예제 코드와 함께 자세히 살펴보겠습니다.

중위 연산자(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-

정리하면, *는 곱셈·반복 연산과 가변 위치 인자 처리에, **는 거듭제곱과 키워드 인자 처리에 사용됩니다. 두 연산자의 동작 방식을 정확히 이해해 두면 파이썬 코드를 훨씬 유연하고 간결하게 작성할 수 있습니다.