본문 바로가기

Programming/Python Tutorials

[PYTHON 3] Tutorials 17. Unpacking Arguments

이번 시간에는 Unpacking Arguments에 대해 알아보도록 하겠습니다. Unpacking 은 말 그대로 꾸러미 같은것을 푼다는 의미입니다. 즉, Arguments 꾸러미를 푸는 것이 어떤것인지 알아보려고 합니다. 자 그럼 시작해 보겠습니다.


간단히 임의로 몇살까지 살 수 있을지에 관한 계산을 할 수 있는 함수를 정의해 보았습니다. 물론, 허구성이며 단순 계산식이니 신빙성은 없는 산술식이라고 하겠습니다. 위의 그림처럼 3개의 parameters를 받는 health_calculator라는 함수를 정의 하였습니다. 나이, 하루에 먹는 사과 개수, 하루에 피는 담배는 얼마인지. 이런걸로만 만든 계산기입니다. 계산을 하고 결과를 answer에 저장하고 출력하게끔 하였습니다.

그리고 'brown'이라고 하는 사람의 나이, 사과갯수, 흡연량 이 담긴 데이터를 리스트로 주었습니다. 

이제 이 2가지(계산해주는 함수, 개개인 데이터)를 가지고 결과를 확인해 봐야겠죠? 위와 같이 함수가 3개의 인자를 받게끔 하고 호출하였습니다. 이제 실행을 해 보겠습니다.

위의 결과처럼 대략 75세까지 산다(?)는 결과가 산출이 되었네요. 그런데 만약 brown 이라는 사람의 데이터가 위의 경우처럼 3가지가 아니라 한 100여개를 입력해야한다고 가정해봅시다. 위의 경우처럼 0번째 포지션값, 1번째 포지션값, ......99번째 포지션값. 이렇게 하는게 너무 번잡하지 않을까요? 그리고 이러한 사람이 수천, 수만, 수십만명이나 되는 데이터베이스로 가지고 있다고 한다면??? 프로그램이니 보다 단순하게 해결할 수 있을것 같지 않나요? 당연히 방법은 있습니다. 파이썬에서는 이를 두고 Unpacking Arguments라고 합니다. 본 글의 제목과도 같죠. 어떻게 처리해야 할까요? 방법은 너무나~ 단순한.....

위 그림처럼 데이터를 담고 있는 리스트 변수 앞에 Asterisk Sign(*) 을 붙여주면 됩니다. 이 의미는 말그대로 Unpacking Arguments 해주겠다는 의미입니다. browns_data안에 있는 리스트를 하나씩 풀어준다는 의미가 됩니다.

1. browns_data[0], browns_data[1], browns_data[2], ............... browns_data[99]

2. *browns_data

변수가 리스트일 경우, 박스안의 1번째 방법과 2번째 방법이 같은 일을 처리한다는 의미입니다. 어느 것을 선택하느냐는 자유지만, 2번이 훨~씬 쉬워보이지 않으세요? 타이핑 치는 것만해도.....;;

이제 결과를 확인해 봐야하겠죠? 둘의 결과가 어떠할지..

위의 방법 1, 방법 2 의 실행 결과입니다. 당연히 같은 결과가 나오네요. Unpacking Arguments는 여기까지입니다. 수고하셨습니다.