Это вполне ожидаемое поведение. Позвольте мне описать, почему.
Каждый отдельный вызов count_up_to возвращает вам новый генератор, который начинается с 1.
Простая проверка Python REPL:
>>> count_up_to(100)
<generator object count_up_to at 0x10e28beb0>
>>> count_up_to(100)
<generator object count_up_to at 0x10e28bf00>
>>> count_up_to(100)
<generator object count_up_to at 0x10e28beb0>
>>> count_up_to(100)
<generator object count_up_to at 0x10e28bf00>
Посмотрите на адрес. Он всегда разный, в памяти 4 разных генератора.
Итак, функция count_up_to не является генератором сама по себе, но она возвращает генератор при вызове.
И когда вы сохраняете результат из count_up_ для вызова переменной, вы храните генератор Далее вы можете получить значения из генератора, хранящиеся в переменной.