Python

[Python] Asterisk(*)

비번변경 2023. 10. 17. 02:13

Asterisk

Python 코드를 찾아보면 Asterisk(*)를 사용하는 모습을 많이 볼 수 있는데, Python에서 Asterisk는 곱셉 연산 외의 여러 기능을 제공한다.

이 글에서는 Asterisk로 어떤 연산을 할 수 있는지 정리해 둔다.

 

 

 

곱셉, 거듭제곱

Python에서 Asterisk는 곱셈 연산을 할 때 사용할 수 있다. 또 Asterisk를 연달아 사용해(**) 거듭제곱 연산을 할 수 있기도 하다.

2 * 3
2 ** 3

 

 

interable 데이터 반복

리스트와 같은 반복 가능한 데이터를 반복적으로 확장하는 용도로 사용할 수 있다.

print([i for i in range(3)] * 2)
print((1, 2, 3) * 2)

 

 

interable 데이터 unpacking

함수 호출 시 매개변수로 반복 가능한 데이터를 전달했을 때 데이터를 풀어 각각으로 만들 수 있다.

data = [i for i in range(3)]
print(data)
print(*data)

전달한 데이터가 dictionary라면 key를 풀어낸다.

data = {'a': 1, 'b': 2, 'c': 3}
print(data)
print(*data)

 

 

가변인자 사용

함수 정의 시 가변인자를 사용할 때 변수명 앞에 *, **를 사용한다. positional arguments를 사용할 때는 *를, keyword arguments를 사용할 때는 **를 사용한다.

참고로 가변인자의 변수명으로는 args, kwargs를 많이 사용하는데 두 변수의 이름이 예약어는 아니다.

참고 : 2022.08.08 - [Python] *args / ** kwargs

 

- positional arguments

def add(*args):
    return sum(args)

print(add(1, 2, 3))

 

- keyword arguments

만약 함수에 전달할 매개변수가 딕셔너리로 저장되어 있다면 함수를 호출할 때 Asterisk로 언패킹 해서 전달해 주면 된다.

def intro(**kwargs):
    for k, v in kwargs.items():
        print(f"{k} : {v}")
            
    
intro(name='james', age=23)

data = {'a': 1, 'b': 2, 'c': 3}
intro(**data)

 

 

 

 

 

참고 문서

파이썬 별표(*), Asterisk의 역할

https://mingrammer.com/understanding-the-asterisk-of-python/