본문 바로가기
Python

Python - *args와 **kwargs 이해

by 올엠 2024. 3. 25.
반응형

파이썬은 참 편리한 언어이다. 여러가지 내부적으로 처리해주는 기능들이 있으면서도, 이러한 부분들이 개발자들이 사용하는데 크게 이질감이 있지 않다.

이렇게 개발자의 편의를 지원해주는 기능들을 매직 메소드라는 것이 있고, 그중에 *args와 **kwargs  역시 이러한 매직 메소드로 지원되는 기능인데 어떻게 활용 할 수 있는지에 대해서 간략히 정리해 본다.

*args와 **kwargs 는 보다 쉽게 아스키로 표현된다고 할 수 있다.

*  아스키 기호 하나: 값를 의미
** 아스키 기호 두개: 사용하면 키가 있는 인자값을 의미

 

이 매직 메소드를 사용하기 유용한 곳은 어떠한 변수 값을 받을지 알 수 없는 경우에 여기에 값이 있는지를 확인해서 처리할 수 있기 때문에 유용하게 사용할 수 있다.

*args(Arguements)

인자값만을 전달하는 구조로써, Type은 tuple 형식으로 데이터가 저장된다.

튜플은 리스트보다 추가, 삭제등이 제한적이지만 데이터가 리스트 형태로 관리하여 사용할 수 있다.

("one","two","three")

def args_task(*numbers):
    print(type(numbers))
    for value in numbers:
        print(value)


if __name__ == '__main__':
    args_task("one","two","three")

 

위와 같이 *로 선언하여 여러 인자 값이 들어오더라도 함수에서 이를 받아서 처리하는게 가능하다.

**kwargs(Key With Arguements)

키, 값 형태로 전달하는 구조로써, Type은 dict 형식으로 데이터가 저장된다.

딕셔너리 구조이기 때문에 키를 기준으로 값을 검색하거나 변경하는것이 가능하다.

{'one': 1, 'two': 2}

def args_task(**numbers):
    print(type(numbers))
    for key, value in numbers.items():
        print(key, value)


if __name__ == '__main__':
    args_task(one = 1, two =2)

 

주의할점

*args와 **kwargs 를 사용할 때에는 순서가 중요하다.

1. 먼저 가장 일반 변수가 우선적으로 사용해야다 한다.

2. args가 kwargs 보다 우선적으로 사용해야 한다.

 

즉 def test(name, *args, **kwargs) 순서대로 사용해야 한다.

 

 

 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형