이러한 문제를 해결하는 세 가지 방법이 있다. 첫 번째 방법은 ranks 딕셔너리가 어떤 특정 순서로 이터레이션된다고 가정하지 않고 get_winner 함수를 구현하는 것이다. 가장 보수적이고 가장 튼튼한 해법이다.
def get_winner(ranks): for name, rank in ranks.items(): if rank == 1: return name winner = get_winner(sorted_ranks) print(winner) >>> otter
두 번째 방법은 함수 맨 앞에 ranks의 타입이 우리가 원하는 타입인지 검사하는 코드를 추가하는 것이다. ranks가 우리가 원하는 타입이 아니면 예외를 던진다. 이 해법은 보수적인 접근 방법보다 실행 성능이 더 좋을 것이다.
def get_winner(ranks): if not isinstance(ranks, dict): raise TypeError('dict 인스턴스가 필요합니다') return next(iter(ranks)) get_winner(sorted_ranks) >>> Traceback ... TypeError: dict 인스턴스가 필요합니다