<개인공부>/[Python]

[Python] 파이썬 *args와 **kwargs 알아보기

BlockDMask 2025. 3. 27. 22:10
반응형

안녕하세요. BlockDMask 입니다.

오늘은 파이썬 함수에서 자주 보이는 *args**kwargs에 대해 알아보겠습니다.

처음에는 생소할 수 있지만, 함수의 인자를 유연하게 받을 수 있게 해주는 아주 유용한 문법입니다.
실전에서 많이 쓰이므로 제대로 알아두면 코드가 훨씬 깔끔해집니다!



1. *args란?

*args가변 위치 인자라고 합니다.
함수에 몇 개의 인자가 올지 모를 때, 여러 개의 인자를 튜플로 받아줍니다.

def print_args(*args):
    for arg in args:
        print(arg)

print_args('BlockDMask', 'Python', 123)

결과:
BlockDMask
Python
123

- *args는 전달된 인자들을 튜플로 묶어줍니다.
- 인자의 개수에 상관없이 받아서 반복 처리할 수 있어요.



2. **kwargs란?

**kwargs가변 키워드 인자입니다.
key=value 형태의 인자들을 딕셔너리로 받아줍니다.

def print_kwargs(**kwargs):
    for key, value in kwargs.items():
        print(f"{key} : {value}")

print_kwargs(name='BlockDMask', lang='Python', age=30)

결과:
name : BlockDMask
lang : Python
age : 30

- **kwargs는 키워드 인자를 받아 딕셔너리처럼 다룰 수 있습니다.
- 인자 이름을 기반으로 유연하게 처리할 수 있어요.



3. *args, **kwargs 같이 쓰기

두 가지를 동시에 사용할 수도 있어요!
이 순서를 꼭 지켜야 합니다:

일반 인자 → *args**kwargs
def show_all(title, *args, **kwargs):
    print(f"Title: {title}")
    print("args:", args)
    print("kwargs:", kwargs)

show_all("BlockDMask 사용법", 1, 2, 3, name="Python", level="중급")

결과:
Title: BlockDMask 사용법
args: (1, 2, 3)
kwargs: {'name': 'Python', 'level': '중급'}



4. 실전에서 어떻게 쓰이나?

딕셔너리를 함수 인자로 넘길 때 (unpacking)

def introduce(name, age):
    print(f"이름: {name}, 나이: {age}")

info = {'name': 'BlockDMask', 'age': 30}
introduce(**info)

 

여러 인자를 한꺼번에 넘길 때

def add(a, b, c):
    return a + b + c

nums = (1, 2, 3)
print(add(*nums))  # 6

- *는 튜플 또는 리스트를 인자로 펼쳐줍니다.
- **는 딕셔너리를 키워드 인자로 넘깁니다.



5. 마무리 정리

문법 설명 전달되는 형태
*args 가변 위치 인자 튜플 (tuple)
**kwargs 가변 키워드 인자 (key=value) 딕셔너리 (dict)

 

마무리

이상, 파이썬 *args, **kwargs 완벽 정리에 대해서 적어보았습니다.
함수를 더 유연하게 만드는 핵심 문법이니 꼭 익혀두세요!

오늘도 읽어주셔서 감사합니다! 😊

반응형