본문 바로가기

Programming/Python Tutorials

[PYTHON 3] Tutorials 15. Keyword Arguments

안녕하세요. 이번 시간에는 'Keyword Arguments'에 대해서 알아보도록 하겠습니다. 일전의 튜토리얼에서 default arguments에 대해 알아보았는데, 그것의 연장선상에 있다고 생각하시면 되겠습니다. 자 그럼 시작하겠습니다.


우선 silly_sentence라고 하는 임의의 함수를 정의합니다. 여기의 arguments를 위와 같이 3개로 구성하겠습니다. name, action, item 으로 3개의 arguments를 지정해 줍니다. 일전의 튜토리얼에서 default arguments 에 얘기했었는데, 이 경우 argument를 전달해 주지 않았을 경우 함수에서 미리 지정한 default로 그 값을 대신한다는 내용이었습니다. keyword arguments 또한 비슷하다고 여기면 됩니다. 다시 돌아가면 위의 함수는 전달받은 3개의 arguments를 출력하게만 하는 함수입니다.

위의 함수를 출력해 볼까요? 결과가 어떻게 나올까요? 함수 호출에서 어떠한 인자도 넣어주지 않았기 때문에, 정의한 함수의 default값을 사용하게 될 것입니다. 그러면 함수의 default로 선언된 name, action, item 이 출력이 되겠죠?

네. 결과는 위에 보는바와같이 나옵니다. 전달받은 arguments가 없으니 함수의 default로 출력이 이루어 졌습니다.

그렇다면 위의 2번째 함수 호출 silly_sentence("Harry", "plays", "games") 을 실행하게 되면 어떻게 될까요? 호출할 때 사용한 arguments의 순서는 함수 정의의 arguments 순서와 동일합니다. 즉 "Harry" 와 상응하는게 name='Lucy' 이고, "plays"에 상응하는게 action='ate'이며, "games"에 상응하는게 item='jelly'가 되는 것입니다. 다시말해서 "Harry","plays","games"가 전달되어지기 때문에 함수의 default 값들을 대체하게 될 것입니다. 결과를 확인해 보시면 바로 아실 수 있을 겁니다.


결과는 위의 그림과 같이 default 값을 대체한 결과가 나오고 있습니다. 관건은 순서 라는 것입니다.

그럼 순서와 관계없이 arguments를 지정할 수 있느냐? 네. 있습니다. 그게 바로 이번 시간에 다루는 keyword arguments 입니다. 위의 그림에서처럼 item='hamburger'라는 값만 전달해주면, 나머지는 전달하지 않았기 때문에 함수의 default 값을 사용할 것입니다. 순서와 관계없이 item 이라고 하는 keyword 로 접근을 하고 있다는게 관건입니다. 결과를 확인해 볼까요?

위의 그림처럼 결과가 나오고 있습니다. argument 전달을 keyword로 지정을 해주었기 때문에 정의된 함수의 arguments 순서와 관계없이 전달해 줄 수 있다는 것입니다.

그렇다면 이번에는 3개의 arguments 를 모두 대체하게 해 보겠습니다. 위 그림처럼 name, action, item 모두 전달해 주겠습니다. keyword를 지정해 주었기 때문에 호출할 때 순서가 바뀌어도 상관이 없습니다. 결과를 확인해 볼까요?

예상한대로 잘 나오고 있나요? 그렇다면 잘 이해하고 계신겁니다. Keyword Arguments 에 대해선 여기까지 하도록 하겠습니다. 수고하셨습니다.