*args와 **kwargs
학습 목표
- 위치 인자와 키워드 인자의 차이를 이해한다
*args로 가변 위치 인자를 받을 수 있다**kwargs로 가변 키워드 인자를 받을 수 있다- 매개변수 순서 규칙을 올바르게 적용할 수 있다
왜 중요한가
가변 인자는 유연한 함수 인터페이스를 설계하는 핵심 도구입니다. ML/DL에서 하이퍼파라미터를 딕셔너리로 전달하거나, 래퍼(Wrapper) 함수를 작성할 때*args와 **kwargs는 필수입니다.
위치 인자와 키워드 인자
*args (가변 위치 인자)
*args는 여러 개의 위치 인자를 튜플로 받습니다.
**kwargs (가변 키워드 인자)
**kwargs는 여러 개의 키워드 인자를 딕셔너리로 받습니다.
*args와 **kwargs 함께 사용
매개변수 순서 규칙
키워드 전용 인자 (*)
* 뒤의 매개변수는 반드시 키워드로 전달해야 합니다.
위치 전용 인자 (/)
Python 3.8+에서/ 앞의 매개변수는 반드시 위치로 전달해야 합니다.
언패킹으로 인자 전달
AI/ML에서의 활용
args, kwargs는 반드시 이 이름을 써야 하나요?
args, kwargs는 반드시 이 이름을 써야 하나요?
아닙니다.
*와 **가 중요하며, 이름은 관례일 뿐입니다. *values, **options 등으로 사용해도 됩니다. 하지만 *args, **kwargs가 Python 커뮤니티의 표준 관례입니다.키워드 전용 인자는 왜 필요한가요?
키워드 전용 인자는 왜 필요한가요?
train(model, 10, 0.01, 32) 같은 호출은 각 숫자가 무엇을 의미하는지 알기 어렵습니다. train(model, epochs=10, lr=0.01) 처럼 강제하면 코드의 의도가 명확해집니다.체크리스트
-
*args와**kwargs의 차이를 설명할 수 있다 - 매개변수 순서 규칙을 올바르게 적용할 수 있다
-
*와**를 사용한 언패킹으로 인자를 전달할 수 있다 - 키워드 전용 인자(
*)의 필요성을 이해한다

