파이썬으로 코딩을 하다보면 아스타리스크(*)를 이용하는 경우가 종종 보이는데 이것은 어떤 상황에서 사용하는건지 궁금해서 알아보았습니다.
찾아보니 여러가지 상황에서 사용하는 것으로 보이는데 크게 4가지로 나뉩니다.
제가 아스타리스크를 봤을때 떠오른건 곱셈과 거듭제곱인 산술연산자인데요.
기본적인 산술계산을 할 때 *
를 사용합니다.
#예시
print(2 * 4) # 결과값 8
print(2 ** 4) # 결과값 16
리스트나 튜플 타입의 자료형을 *
를 사용하여 확장 시킬 수 있으며 DFS,BFS 알고리즘에 해당 노드를 방문했는지 안했는지 확인하기 위한 초기변수를 선언할때도 사용됩니다.
간단하게 한 줄로 선언할 수 있어서 좋아요
#예시
test = [0] * 5
print(test) # 결과값 0 0 0 0 0
코딩테스트를 하다보면 리스트나 튜플 같은 컨테이너(Container) 타입의 객체에서 값들을 꺼내서 출력해야하는 상황이 발생하는데 이때 *
를 사용하여 unpacking 할 수 있다.
Container 객체란?
데이터 자료형에 상관없이 데이터 저장이 가능한 자료구조형을 컨테이너 객체라하며, 문자열(str), 튜플(tuple), 리스트(list), 딕셔너리(dict), 집합(set) 자료형들이 컨테이너 객체에 속합니다.
즉, 정수, 실수, 복소수 타입은 Container 객체가 아님!
#예시
# unpacking 하지 않았을때
# 0부터 4까지 출력하는 코드
test = [i for i in range(5)]
print(test) # 결과값 [0, 1, 2, 3, 4]
# unpacking 했을때
# 0부터 4까지 출력하는 코드
test = [i for i in range(5)]
print(*test) # 결과값 0 1 2 3 4
파이썬에서 함수를 만들었는데 들어오는 인자의 개수를 모르거나 지정된 인자를 처리할때 주로 사용되는데 *args
, **kwargs
를 사용하여 코드를 작성합니다.
*args는 여러 개의 인자를 함수로 받고자 할 때 사용되는데 *
를 사용하며 이때 결과값은 튜플형태로 반환되는것을 확인할 수 있습니다.
def test(*args):
print(args)
test(100,200,300)
# (100, 200, 300)
**kwargs는 이름이 지정된 인자를 처리하고자 할 때 사용되는데 **
를 사용하며 이때 결과값은 딕셔너리 형태로 반환되는 것을 확인할 수 있습니다.
def test(**kwargs):
print(kwargs)
print(kwargs["number1"])
print(kwargs["number2"])
print(kwargs["number3"])
test(number1=100, number2=200, number3=300)
"""
결과값
{'number1': 100, 'number2': 200, 'number3': 300}
100
200
300
"""
파이썬에 아스타리스크가 생각보다 다양한 곳에서 사용되는것을 확인할 수 있었고 코딩테스트를 하다보니 이런 문법들을 알게되는 것이 너무 좋은 경험이라고 생각된다!