Page 24 -
P. 24

1.3.2  해답


               def mysum(*numbers):
                   output = 0
                   for number in numbers:
                       output += number
                   return output

               print(mysum(10, 20, 30, 40))

              이 예제는 http://mng.bz/nPQg에서 확인할 수 있습니다.




                                  이터러블을 매개변수로 전개하기
                [1,2,3]과 같은 리스트 형태로 자료를 갖고 있다면 mysum 함수의 매개변수로 어떻게 전달해
                야, 이러한 리스트 내부의 숫자를 더할 수 있을까요? 단순하게 mysum([1,2,3])으로 호출하
                면 *numbers로 ([1,2,3], ) 형태의 튜플이 전달될 뿐입니다.
                따라서 0에 각각의 요소를 더하는 형태로 코드를 구성했다면 0에 [1,2,3]을 더하게 되어서
                TypeError 예외가 발생할 것입니다. 파이썬에서는 리스트와 숫자를 더할 수 없기 때문입니다.
                결론부터 말하자면 리스트를 매개변수로 넣을 때 앞에 * 연산자를 붙여주면 됩니다. 예를 들어
                mysum(*[1,2,3]) 형태로 호출하면 리스트 내부의 요소들이 마치 mysum(1,2,3) 형태로
                각각 매개변수로 들어갑니다.
                이터러블 객체의 요소 하나하나를 함수의 매개변수로 전달해야 하는 경우에 굉장히 많이 사용
                하는 코드이므로, 꼭 기억하기 바랍니다.





              1.3.3  조금 더 나아가기


              이 코드의 mysum 함수처럼 리스트 또는 튜플의 요소를 반복하고, 어떤 연산을 적

              용하는 코드는 굉장히 많이 활용합니다. 추가 예제를 몇 가지 소개하겠습니다.










          040




     파이썬_06.indd   40                                                      2021-11-18   오전 9:38:17
   19   20   21   22   23   24   25   26   27   28   29