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