*args: 위치 인수를 튜플로 받아 출력**kwargs : 키워드 인수를 딕셔너리로 받아 출력def print_args(*args):
for arg in args:
print(arg)
print_args('apple', 'banana', 'cherry')
>> apple
banana
cherry
def func_with_args_kwargs(*args, **kwargs):
print("Positional arguments (args):", args)
print("Keyword arguments (kwargs):", kwargs)
func_with_args_kwargs(1, 2, 3, a=4, b=5)
Positional arguments (args): (1, 2, 3)
Keyword arguments (kwargs): {'a': 4, 'b': 5}
# 저장 순서 : parent->init => child->ininit
class Parent:
def __init__(self, *args):
self.data = args
class Child(Parent):
def __init__(self, *args, **kwargs):
super().__init__(*args) # 부모 클래스의 __init__에 위치 인수 전달 : 1, 2, 3,
self.extra_data = kwargs # 추가적인 키워드 인수 저장 : name='John', age=25
child_instance = Child(1, 2, 3, name='John', age=25)
print(child_instance.data) # 출력: (1, 2, 3)
print(child_instance.extra_data) # 출력: {'name': 'John', 'age': 25}
>> (1, 2, 3)
{'name': 'John', 'age': 25}
Child 클래스는 부모 클래스인 Parent로부터 상속받는다.
*args를 통해 모든 위치 인수를 부모 클래스의 init 메서드로 전달한다.
**kwargs를 통해 받은 키워드 인수는 extra_data라는 인스턴스 변수에 저장한다.
*args와 **kwargs를 활용하면 함수나 메서드에서 가변적인 인수를 유연하게 처리할 수 있다.