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