반응형
안녕하세요. 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
완벽 정리에 대해서 적어보았습니다.
함수를 더 유연하게 만드는 핵심 문법이니 꼭 익혀두세요!
오늘도 읽어주셔서 감사합니다! 😊
반응형
'<개인공부> > [Python]' 카테고리의 다른 글
[Python] 파이썬에서 날짜 다루기 (datetime 기본부터 실전까지) (0) | 2025.03.31 |
---|---|
[Python] 파이썬 리스트 컴프리헨션 vs for문 (0) | 2025.03.29 |
[Python] 파이썬에서 파일 경로 다루기 (`os` vs `pathlib`) (0) | 2025.03.25 |
[Python] 파이썬 zip() 함수 활용법 (0) | 2025.03.23 |
[Python] 파이썬 딕셔너리에서 get() vs [] 차이점 (0) | 2025.03.19 |
[Python] 파이썬 with open() 을 써야하는 이유 (0) | 2025.03.08 |
[Python] 파이썬 enumerate() 함수로 인덱스와 값 동시에 가져오기 (0) | 2025.02.17 |
[python] 파이썬 리스트를 문자열로 변환 하는 방법 (2) | 2022.05.07 |