파이썬에서 args
와 kwwargs
는 함수를 정의할 때 가변 인자(Variable-length arguments)를 받아들이기 위한 문법적 장치.
args
(가변 위치 인자)def example_func(*args):
for i, arg in enumerate(args):
print(f"args[{i}] = {arg}")
example_func(1, "hello", 3.14)
# args[0] = 1
# args[1] = hello
# args[2] = 3.14
kwargs
(가변 키워드 인자)def example_func(**kwargs):
for key, value in kwargs.items():
print(f"{key} = {value}")
example_func(name="Alice", age=30, job="Engineer")
# name = Alice
# age = 30
# job = Engineer
__init__
에서 사용되는 이유__init__
메서드가 받는 인자 형태를 그대로 자식 클래스에서도 받고 싶을 수 있음.__init__
에서 *args, **kwargs
를 통해 모든 인자를 받아 두었다가, 부모 클래스의 __init__
에 넘길 수 있음.class Parent:
def __init__(self, x, y, **kwargs):
self.x = x
self.y = y
class Child(Parent):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Child-specific initialization
*args
, **kwargs
는 코드를 자주 수정할 필요 없이 유연하게 대응할 수 있다.*args
: 여러 개의 위치 인자를 하나의 튜플로 받아옴.**kwargs
: 여러 개의 키워드 인자를 하나의 딕셔너리로 받아옴.__init__
에서 *args
와 **kwargs
를 사용하는 주된 이유는 상속 구조에서 인자를 유연하게 전달하기 위함이며, 다양한 함수 시그니처(매개변수 형태)에 대응하기 위한 편의성도 제공.