*args(위치 가변 인자)

  • args는 *arguments의 줄임말입니다.
  • 임의의 개수의 인자를 받는 함수를 가리켜 가변 인자를 사용한다고 표현합니다.

그리고 무조건 *args라는 이름을 지키지 않아도 작동이 됩니다!

⇒ a 라고 써도 되고, *asdfadfads라고 적어도 되고, 아래 예시 처럼 *Names라고 써도 정상작동합니다.

이 지시어는 여러 개(복수개의)의 인자를 함수로 받고자 할 때 쓰입니다.

 

 

 

이런식으로 *args에 들어온 값들을 튜플 형태로 처리합니다.

 

 

 

 

 

**kwargs(키워드 가변 인자)

함수는 임의의 개수의 키워드 인자도 받을 수 있습니다.

**kwargs는 keyword argument의 줄임말로 키워드를 제공합니다.

바로 예시를 볼까요?

 

 

  • *kwargs는 (key(키워드) = value(값)) 형태로 함수를 호출할 수 있습니다.

추가적인 키워드를 딕셔너리 형태로 {key(키워드) = value(값)} 요렇게 함수 내부로 전달됩니다.

그렇게 전달받은 딕셔너리를 마음대로 조리하면 되겠죠?

이것을 또 다르게 사용하는 방법으로는

특정 키워드에 반응하여 함수를 작성하는 방법이 있습니다.

제 이름인 ant가 입력되었을 때는 다르게 반응하고 싶게 만들어봅시다.

 

 

 

 

 

*args, **kwargs를 둘 다 써보자.

둘 다 써보는 것은 어떨까요?

위의 내용을 조금 변형해서 써봅시다.

 

 

함수명 바로 아래에 다중 문자열(''')을 넣어서 함수의 docstring으로 만들어 줍니다.

저렇게 함수에다가 docstring을 넣으면 help()함수로 함수의 설명을 읽을 수 있습니다.

  • blogs에는 블로그1, 블로그2, 블로그3을 arguments로 넣었고,
  • *blogs_benefits는 블로그수익1, 블로그수익2, 블로그수익3 으로 각각 키워드를 넣어서 입력했습니다.

보다시피 blogs , *blogs_benefits를 순서대로 넣은 것을 볼 수 있습니다.

순서를 바꾸면 어떻게 될까요?

 

 

작동하지 않습니다.

 

이를 통해서 *args, *kwargs도 순서가 있다는 것을 확인할 수 있습니다.

var, args, *kwargs 함수를 호출할 때 인수를 이 순서로 넣어줘야 정상작동한다!

 

 

 

 

 

결론 및 요약

function(args, *kwargs)

return 0;

함수의 파라미터 순서 : 일반 변수(var), 변수(*args), 변수(kwargs)

  • 변수 -> 여러개가 아규먼트로 들어올 때, 함수 내부에서는 해당 변수를 'tuple'로 처리한다.
  • *변수 -> 키워드='' 로 입력할 경우에 그것을 각각 키와 값으로 가져오는 'dict'로 처리한다.

충분히 복습하면서 연습해보는 것을 권장합니다.

 

 

 

 

 

 

 

참조:

https://brunch.co.kr/@princox/180

https://wikidocs.net/84426

반응형

'python' 카테고리의 다른 글

[python] modul(모듈)  (0) 2021.02.23
[python] 이터레이터와 제너레이터  (0) 2021.02.20
[python] lambda expression(람다 표현식)  (0) 2021.02.19
[python] Decorator(데코레이터)  (0) 2021.02.18
[python] Closure(클로저 )  (0) 2021.02.17

+ Recent posts