더북(TheBook)

17.9 다형성

타입 기반 디스패치는 필요할 때는 유용하지만, (다행히도) 항상 필요한 것은 아니다. 다양한 타입의 인수에 대해서 올바르게 동작하는 함수를 작성하면 타입 기반 디스패치가 필요하지 않을 때가 종종 있다.

문자열에 대해 작성된 함수는 대부분 다른 시퀀스 타입에 대해서도 동작한다. 예를 들어 188쪽의 11.2 카운터 컬렉션으로서의 사전에서 우리는 단어에 나타나는 각 문자의 개수를 세는 데 histogram을 사용했다.

def histogram(s):

d = dict()

for c in s:

if c not in d:

d[c] = 1

else:

d[c] = d[c]+1

return d

histogram 함수는 s의 원소가 해시 가능하다면 리스트, 튜플, 사전에 대해서도 동작하므로 d에 키로 사용될 수 있다.

>>> t = ['spam', 'egg', 'spam', 'spam', 'bacon', 'spam']

>>> histogram(t)

{'bacon': 1, 'egg': 1, 'spam': 4}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.