더북(TheBook)

최종적으로 생성된 차트 그 자체가 중요하다면 전체 단어 컬렉션을 굳이 인스턴스화할 이유가 없습니다. 실제로 우리에게 필요한 것은 마법 숫자뿐입니다. 물론 이 예제는 리팩토링의 이점을 완전히 보여 주기에는 너무 단순합니다. 실제로 우리의 관심 대상인 데이터만 그때그때 생성해 주는 생성기(generator)를 구성하고 중간 데이터는 필요할 때만 사용하는 것이 현명한 접근 방식이라고 할 수 있습니다. 예를 들어 다음 코드는 그림 1-2와 같은 차트를 생성합니다.

생성기에서 필요한 것만 그때그때 계산하기

def word_numbers(src):
    while (word := get_word(src=src)) is not None:
        yield word_number(word)

# source2 = <데이터 원본을 나타내는 임의의 다른 구분자>
magic_nums = list(word_numbers(source2))
plt.plot(magic_nums)
plt.title(f"Magic values of {len(magic_nums):,} generated words")
plt.show()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.