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
   13   14   15   16   17   18   19   20   21   22   23