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)
참고 문서
https://mingrammer.com/understanding-the-asterisk-of-python/