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

파이썬 더블 애스터리스크(**) 연산자의 의미와 활용법

파이썬 더블 애스터리스크(**) 연산자란?

파이썬에서 이중 별표(**, double asterisk)는 사용되는 위치에 따라 두 가지 완전히 다른 역할을 수행합니다. 숫자 데이터 타입에서는 거듭제곱(지수) 연산자로 동작하고, 함수 정의에서는 여러 개의 키워드 인수(keyword arguments)를 받는 기능을 제공합니다. 각각의 용도를 예제와 함께 자세히 살펴보겠습니다.

1. 숫자 데이터 타입의 거듭제곱 연산자

숫자 데이터 타입에서 더블 애스터리스크는 거듭제곱 연산자로 정의됩니다. 정수뿐만 아니라 실수(float), 복소수(complex)에도 모두 사용할 수 있습니다.

>>> a = 10; b = 2
>>> a**b
100

>>> a = 1.5; b = 2.5
>>> a**b
2.7556759606310752

>>> a = 3+2j
>>> b = 3+5j
>>> a**b
(-0.7851059645317211+2.350232331971346j)

위 예시처럼 a**b는 a의 b제곱을 계산합니다. 정수형 10의 2제곱은 100, 실수형 연산과 복소수 연산도 오류 없이 처리되는 것을 확인할 수 있습니다.

2. 함수 정의에서 키워드 인수(**kwargs) 수집하기

함수를 정의할 때 매개변수 이름 앞에 더블 애스터리스크를 붙이면, 호출 환경(calling environment)에서 전달되는 여러 개의 키워드 인수를 하나의 딕셔너리(dictionary) 형태로 받을 수 있습니다.

>>> def function(**arg):
...     for i in arg:
...         print(i, arg[i])

>>> function(a=1, b=2, c=3, d=4)
a 1
b 2
c 3
d 4

함수 내부에서는 전달된 키워드 인수들이 '키-값' 쌍으로 구성된 딕셔너리로 저장되므로, 일반적인 딕셔너리처럼 반복문으로 순회하며 접근할 수 있습니다. 관례상 이 매개변수의 이름은 kwargs(keyword arguments)로 작성하는 것이 일반적입니다.

>>> def print_info(**kwargs):
...     for key, value in kwargs.items():
...         print(f"{key}: {value}")

>>> print_info(name="홍길동", age=30, job="개발자")
name: 홍길동
age: 30
job: 개발자

3. 보너스: 함수 호출 시 딕셔너리 언패킹

더블 애스터리스크는 함수를 호출하는 시점에서도 활용할 수 있습니다. 딕셔너리 앞에 **를 붙이면 해당 딕셔너리의 키-값 쌍이 키워드 인수로 언패킹(unpacking)되어 전달됩니다.

>>> def add(x, y):
...     return x + y

>>> params = {'x': 10, 'y': 20}
>>> add(**params)
30

정리

파이썬의 더블 애스터리스크(**) 연산자는 다음과 같이 요약할 수 있습니다.

  • 숫자 연산에서: 거듭제곱(exponentiation)을 계산하는 지수 연산자로 사용됩니다.
  • 함수 정의에서: 임의 개수의 키워드 인수를 딕셔너리 형태로 수집합니다(관례상 **kwargs).
  • 함수 호출에서: 딕셔너리를 키워드 인수로 언패킹하여 전달합니다.

이처럼 **는 파이썬에서 유연한 함수 설계와 다양한 숫자 연산을 가능하게 해주는 강력한 도구이므로, 사용 위치에 따른 차이를 정확히 이해하고 활용하는 것이 좋습니다.