[Python] 파이썬 *args(가변위치인자) & **kwargs(가변키워드인자)
∇ *args(가변위치인자) : variable length arguments
: 가변 위치 인자는 함수가 임의의 개수의 인자를 받을 수 있게 해주는 기능입니다.
*args라고 쓰지만, args대신에 다른걸 아무거나 넣어도 괜찮습니다.
- 이 지시어는 여러 개의 값(인자)를 함수로 입력 받고자 할 때 사용합니다.
[정확히는, 정해지지 않은 수의 일반 인자]
--> 여러개의 인자를 받은 경우, 함수 내부에서는 "튜플"로 받은 것처럼 인식합니다.
∞ *args의 장점.
√ 유연성 : 함수가 다양한 수의 인자를 간결하게 처리할 수 있습니다.
√ 코드 재사용성 : 비슷한 기능을 하는 여러 함수를 하나로 통합할 수 있습니다.
++ 다른 매개변수와 같이 사용하는 경우에, 가변인자로 선언한 부분은 맨 뒤쪽으로 와야 합니다.
∇위치인자 vs 키워드인자.
++디폴트 출력값 만들어주기.
∇**kwargs(가변키워드인자). - keyword arguments
가변위치인자와 마찬가지로, 일반적으로 **kwargs라고 쓸뿐이지,
다른 단어로 써도 상관이 없습니다.
*args와 다른 점이라면, **kwargs(가변키워드인자)는 키워드(키값-벨류값)으로 이루어진 복수의 인자를 받습니다.
[정확히는, 정해지지 않은 수의 키워드(키값-벨류값)로 이루어진 인자]
**kwargs역시 *args처럼 다른 매개변수들과 같이 사용 될 때, 맨 뒤쪽에 넣어줘야 합니다.
∞ **kwargs의 장점.
√ 유연성 : 함수가 다양한 수의 키워드인자를 딕셔너리로 간결하게 처리할 수 있습니다.
√ 확장성 : 새로운 매개변수를 쉽게 추가할 수 있습니다.
∇ *args vs **kwargs(가변키워드인자)의 차이점.
√ 인자 전달 방식.
- *args : 위치 & 값 기반으로 인자를 전달합니다,
- **kwargs: 키--벨류값 쌍으로 인자를 전달합니다.
√ 데이터 타입.
- *args: 튜플(tuple)로 저장됩니다.
- **kwargs: 딕셔너리로 저장됩니다.
√ 사용 상황.
- *args : 인자의 개수가 변할 수 있지만, 순서가 중요할 때 사용합니다.
- **kwargs: 인자의 키-벨류 형태가 동적으로 결정될 때 사용합니다.
∞ *args와 **kwargs를 함께 사용하기 원할때는
*args를 먼저 작성하고, 그 다음에 **kwargs를 작성합니다.