언어/파이썬

파라미터로 *(star)와 **(double star) 는 어떤 의미 일까?

AlgoPoolJa 2021. 1. 18. 16:39

가끔 함수의 파라미터로 *와 ** 가 붙어있거나 list등을 인자로 넣어 줄때 function(*some_list) 같이 써있는 것을 볼 수 있다.

이것은 어떤 의미를 나타내는 것일까?

파이썬에서

*는 언팩(unpack)이다. 즉 시퀀스 언팩킹 연산자로 말 그대로 시퀀스를 풀어헤치는 연산자를 뜻하며, 주로 튜플이나 리스트를 언패킹하는데 사용한다.

**는 키/값 페어를 언패킹하는 연산자 이다.

 

매개변수 *args 는 입력을 튜플로 변환하여 모두 받는다.

 

매개변수 **kwargs는  입력으로 사전형과 같은 key ,value와 같은 형태만을 입력으로 받는다. 파라미터의 변수를 모든것을 사전형처럼 받는다.

 

 

*args나 **kwargs 모두 일반 파라미터와 혼용해서 사용할 수 있다.

 

 

또한 아래와 같은 방법으로도 사용할 수 있다.(**을 입력파라미터로 붙여주면 {}가 없어진다.)

 

*을 입력파라미터로 넣어서 list의 원소를 unpack 하여 사용할 수도 있다. 

 

python 3부터는 변수 뒤에 *를 붙어 아래와 같은 방법으로 사용 할 수 있다.

 

마지막으로 함수인자 * 뒤부터는 모든 것을 keyward로 받을 수 있다.  

함수에서 받는 매개변수를 선언 할때 ** 매개변수는 가장 마지막에 선언되어야 한다.