[Python] *args, **kwargs 뜻 / 함수 파라미터 설정 시 가변 개수 파라미터 설정하는 법
파이썬에서 함수를 선언 시 인수(파라미터, parameter)를 설정해야 한다.
기본적으로는 인수를 0개, 1개, 혹은 그 이상 고정된 개수로 선언하지만,
때에 따라서 1개가 들어올 때도 있고, 3개 이상이 들어올 때도 있을 것이다.
이렇게 인수의 개수가 가변적일 때 함수를 선언하는 방법이 있다.
바로 *args, **kwargs를 사용하는 것이다.
개수가 변하는 위치 인수, *args의 의미
개수가 변하는 인수를 받는 함수는 ⁕가인수 이름에 *을 붙여서 정의할 수 있다.
⁕가인수: 함수를 정의할 때 사용하는 인수 ↔ 실인수: 함수를 호출할 때 전달하는 인수
이 가인수 이름에는 어떤 이름이 들어가도 상관은 없으나, 관습적으로 *args를 사용한다.
*args는 가인수에 할당되지 않은 위치 인수를 튜플로 받는다.
*args는 다른 위치 인수의 가장 마지막에 선언되어야 한다.
예를 들면 다음과 같다.
print_pages 함수를 호출할 때 인수를 'My content'로 1개만 넣는다면
'My content'를 출력하고 끝난다.
뒤에 다른 실인수가 없기 때문에 args는 빈 튜플이므로 for 문은 동작하지 않는다.
그러나 함수에 실인수를 2개 이상 넣는다면
content = 'my content1' 이 되고
*args = ( 'my content2', 'my content3') 가 된다.
그래서 args에 원소가 있기 때문에 for 문이 동작한다.
[ 참고 ] 파이썬에서 변수 앞에 붙는 *의 의미
파이썬에서 변수 앞에 붙는 *의 의미는 언팩킹(껍질을 벗기는 행위) 이다.
C 등에서 사용하는 포인터와 헷갈리지 않도록 하자.
개수가 변하는 키워드 인수, **kwargs의 의미
개수가 변하는 키워드 인수를 받는 함수는 가인수 이름에 **를 붙여 정의할 수 있다.
이도 동일하게 다른 이름을 사용할 수 있으나, 관습적으로 **kwargs를 사용한다.
**kwargs는 키워드 인수를 딕셔너리로 받으며, 가장 마지막 위치에 선언된다.
예시는 다음과 같다.
이미 가인수로 선언된 content 변수에는 'my content'가 저장되며
그 이상의 인수는 딕셔너리 형태로 **kwargs에 저장된다.
키와 값을 개수 상관 없이 자유롭게 선언할 수 있어 함수의 확장성이 커진다.
*args, **kwargs를 같이 사용하기
*args, **kwargs를 같이 사용한다면 어떤 인수의 호출에도 유연하게 대응할 수 있다.
위치 인수를 가져와서 *args변수에,
키워드 인수를 가져와서 **kwargs 변수에 넣는 것을 확인할 수 있다.
* 이 글은 <효율적 개발로 이끄는 파이썬 실천 기술>, 스야마 레이, 제이펍 을 읽으며 작성한 글이다.
'Python' 카테고리의 다른 글
[Python] 람다식(lambda) 사용법, 사용할 위치: filter(), sorted() (0) | 2024.01.16 |
---|---|
[Python] 리스트나 딕셔너리에 저장된 값을 함수의 위치 인수로 전달하는 법 (2) | 2024.01.15 |
[Python] "효율적 개발로 이끄는 파이썬 실천 기술" 책 중요 내용 정리 - 2편 (1) | 2024.01.04 |
[Python] float 타입을 다룰 때 주의점 (0) | 2024.01.04 |
[Python] "효율적 개발로 이끄는 파이썬 실천 기술" 책 중요 내용 정리 - 1편 (0) | 2024.01.04 |