Page 20 -
P. 20

두 번째로 함수를 호출하는 부분과 반환 값을 언패킹하는 부분이 길고, 여러
                  가지 방법으로 줄을 바꿀 수 있어서(PEP 8 스타일을 따라도 그렇다. Better

                  way 2: ‘PEP 8 스타일 가이드를 따르라’ 참고) 가독성이 나빠진다.

                  minimum, maximum, average, median, count = get_stats(
                      lengths)

                  minimum, maximum, average, median, count = \
                  get_stats(lengths)

                  (minimum, maximum, average,
                   median, count) = get_stats(lengths)


                  (minimum, maximum, average, median, count
                      ) = get_stats(lengths)


                  이런 문제를 피하려면 함수가 여러 값을 반환하거나 언패킹할 때 값이나 변
                  수를 네 개 이상 사용하면 안 된다(즉, 값을 세 개까지 쓸 수 있다). 변수가

                  세 개 이하인 언패킹 구문은 세 가지 값을 따로 변수에 넣는 구문일 수도 있
                  고, 두 값을 변수에 넣고 나머지 모든 값을 한 변수에 넣는 구문일 수도 있으

                  며, 더 짧은 언패킹 구문(이런 경우 변수는 두 개 이하)일 수도 있다. 이보다
                  더 많은 값을 언패킹해야 한다면 경량 클래스(lightweight class)나 namedtuple

                  을 사용하고(Better way 37: ‘내장 타입을 여러 단계로 내포시키기보다는
                  클래스를 합성하라’ 참고) 함수도 이런 값을 반환하게 만드는 것이 낫다.



                    기억해야 할 내용

                    •   함수가 여러 값을 반환하기 위해 값들을 튜플에 넣어서 반환하고, 호출하는 쪽에서는 파
                      이썬 언패킹 구문을 쓸 수 있다.
                    •   함수가 반환한 여러 값을, 모든 값을 처리하는 별표 식을 사용해 언패킹할 수도 있다.
                    •   언패킹 구문에 변수가 네 개 이상 나오면 실수하기 쉬우므로 변수를 네 개 이상 사용하
                      면 안 된다. 대신 작은 클래스를 반환하거나 namedtuple 인스턴스를 반환하라.




                                                                         3장  함수  137




     파이썬 코딩의 기술_06.indd   137                                              2020-10-20   오후 2:53:02
   15   16   17   18   19   20   21   22   23   24   25