Page 18 -
P. 18
return 1, 2
first, second = my_function()
assert first == 1
assert second == 2
여러 값을 한꺼번에 처리하는 별표 식을 사용해 여러 값을 반환받을 수도 있
다(Better way 13: ‘슬라이싱보다는 나머지를 모두 잡아내는 언패킹을 사용
하라’ 참고). 예를 들어 각 악어 개체의 몸 길이가 전체 개체군의 몸 길이 평
균에 비해 얼마나 큰지 계산하는 다른 함수가 필요하다고 하자. 이 함수는 비
율로 이뤄진 list를 반환하지만, 별표 식을 사용해 이 list의 중간 부분을 한
꺼번에 받으면 평균 몸 길이와 비교해 가장 긴 악어와 가장 짧은 악어의 비율
을 알 수 있다.
def get_avg_ratio(numbers):
average = sum(numbers) / len(numbers)
scaled = [x / average for x in numbers]
scaled.sort(reverse=True)
return scaled
longest, *middle, shortest = get_avg_ratio(lengths)
print(f'최대 길이: {longest:>4.0%}')
print(f'최소 길이: {shortest:>4.0%}')
>>>
최대 길이: 108%
최소 길이: 89%
이제 프로그램의 요구 사항이 몸 길이의 평균, 중앙값(median), 악어 개체군
의 개체 수까지 요구하는 것으로 바뀌었다고 하자. get_stats를 확장해 이런
통계를 계산하고 결과를 튜플로 반환해 호출하는 쪽에서 값을 언패킹하게 할
수 있다.
3장 함수 135
파이썬 코딩의 기술_06.indd 135 2020-10-20 오후 2:53:02