본문 바로가기

Python

[Python] Phython Asterisk(*) 사용법

728x90
Asterisk(*)의 곱하기 기능 외 기능을 공부하게 되어 기록하려고 한다.

곱하기

(*)는 곱하기 기능을 하는 것으로 잘 알려져 있다.

숫자 자료형의 곱셈 혹은 거듭제곱뿐만 아니라 리스트를 초기화하는 데에도 사용된다.

arr=[0]*10

가변 인자

Asterisk(*)는 함수에서 가변 인자를 받을 때도 유용하게 사용된다.

받을 수 있는 가변 인자는 positional args, keyword args가 있다.

positional args

인자를 positional args로 전달할 경우,

값들만을 가지는 튜플 형태로 인자들을 사용할 수 있다.

def add(*args):
    print(args)
add(1,2,3,4,5)
#(1, 2, 3, 4, 5)

일반적으로 함수에 대한 입력값이 일정하지 않을 때 유용하게 쓰인다.

keyword args

인자를 keyword args로 전달할 경우,

key를 가진 dictionary 형태로 인자들을 사용할 수 있다.

def add(**kwargs):
    print(kwargs)
add(first=1,second=2,third=3)
#{'first': 1, 'second': 2, 'third': 3}

함께 사용하는 경우

만약 인자를 positional args로 받는다고 했는데 key가 있는 인자를 받거나

그 반대의 경우인 keyword args로 받는다고 했는데 값만 있는 인자를 받는다면 오류가 발생한다.

 

두 형태의 인자를 모두 받아야 하는 경우라면, 이를 알려줘야 한다.

def add(*args,**kwargs):
    print(args,kwargs)
add(2,4,first=1,third=3)
#(2, 4) {'first': 1, 'third': 3}

keyword args는 positional args보다 앞에 선언할 수 없으며,

인자를 전달할 때에도 순서에 맞게 전달해야 한다.

def add(**kwargs,*args) #(X)
def add(*args,**kwargs) #(O)

add(first=1,2,third=3,4) #(X)
add(2,4,first=1,third=3) #(O)

컨테이너 타입 데이터를 Unpacking 할 때

이번에 새로 알게 된 기능이다.

tuple, dictionary, list 등의 컨테이너 타입 데이터를 unpacking 하는 기능이다.

 

바로 코드를 보자.

dict={'a':1,'b':2}
print(*dict)
#a b
list=[1,2]
print(*list)
#1 2
tup=(1,2)
print(*tup)
#1 2

위와 같이 원소들을 반환해주는 것이 unpacking 기능이다.

map 객체 등에도 사용할 수 있어 유용하게 사용할 것 같다.

print(*map(int,input().split()))
"""
input : 1 2 3 4
output : 1 2 3 4
"""

참고

아래의 링크에서 자세하게 다뤄주셨다.

 

파이썬의 Asterisk(*) 이해하기

파이썬은 타 언어에 비해 비교적 연산자 및 연산의 종류가 풍부한 편이다. 특히 파이썬이 지원하는 많은 연산자중 하나인 **Asterisk(*)**는 단순히 곱셈

mingrammer.com

마치며

잘못된 정보에 대한 피드백은 환영입니다.

감사합니다.

728x90