본문 바로가기
Programming/Python

파이썬에서 *args와 **kwargs란? (파이썬 Python)

by 심코딩 2022. 7. 14.

파이썬을 하다보면 *args *kwargs라는 것들을 종종 보게 된다. 하지만 나도 예전에는 항상 볼 때마다 이게 무엇인지 하고 넘어갔었는데, 파이썬을 하다보면, 특히 함수를 만들다보면 가끔 정말 필요하게 되는 것 같아 조금 자세하게 적어보려고 한다. 

 

매 포스팅이 그렇듯 해당 포스팅의 주 목표는 나의 복습이자, 미래에 이걸 또 까먹을 나를 위한 포스팅이다.

 


*args란 무엇인가?

 

*args와 **kwargs 모두 변수이다. 일단 *args에 대해 먼저 설명을 하자면, *args는 일단 argument의 약자이다. 또한 *args는 가변인자를 위한 변수인데, 한마디로 말하자면 우리가 함수를 만들 때, 인자를 몇 개 받아야 할지 모르는 경우 입력해두는 변수이다.

 

*뒤에 꼭 args라고 하진 않아도 되지만, 혼동방지를 위해 웬만하면 args로 두는게 좋을 것 같다.

 

def example(*args):
    print(*args)

 

이러한 함수를 만들었다고 예시를 들어보자, 여기 *args 부분엔 어떤 단어가 들어가도, 그 단어를 그대로 출력을 해낼 것이다.

 

def example(*args):
    print(*args)

example("안녕")

 

이렇게 입력을 하면 당연히 "안녕"을 출력 해 낼것이다. 인자가 한개가 아니더라도, 튜플 형식으로 아래와 같이 처리를 해준다.

 

def example(*args):
    print(*args)

example("안녕")
example("안녕","나는","심코딩","입니다")

 

**kwargs 란 무엇인가?

 

*kwargs는 keyword arguments의 약자이다. *args와 마찬가지로 ** 두개는 꼭 붙여야 하지만 뒤 단어는 아무 단어나 들어가도 상관은 없다. 

 

바로 위에서 *args는 튜플형식으로 인자를 저장한다고 하였는데, **kwargs는 딕셔너리 형태로 저장을 한다. 

아래와 같이 코드를 작성하고 실행을 하면

 

def example(**kwargs):
    print(kwargs)

example(first="안녕",second="잘가")

 

이렇게 딕셔너리 형태로 나오는것을 볼 수 있다.

 

댓글