комментирует ваш генератор как возвращаемый тип Iterable [YieldType] или Iterator [YieldType]
Функции генератора возвращают генераторы, они сами не являются генераторами. Если вы делаете:
reveal_type(infinite_stream)
, вы получите что-то вроде Callable[[int], Iterator[int]]
.
То, что вы хотите, это возвращаемое значение функции, фактический итератор.
from typing import Iterator
def infinite_stream(start: int) -> Iterator[int]:
while True:
yield start
start += 1
def print_infinite_stream(inf_iterator: Iterator[int]):
for x in inf_iterator:
print(x)
print_infinite_stream(infinite_stream(5))
Это имеет больше смысла, поскольку теперь print_infinite_stream
обрабатывает любой итератор, а не только функцию генератора. Если вы reveal_type(infinite_stream(5))
, вы должны получить что-то вроде Iterator[int]
, и это именно то, что вы хотите.