Sobes.tech
Back to questions
Junior — Middle
74

Каким образом осуществляется типизация генератора в языках программирования?

Answer from AI

sobes.tech AI

В Python типизация генераторов осуществляется с помощью модуля typing, в частности через тип Generator или Iterator. Тип Generator позволяет указать типы значений, которые генератор возвращает при вызове yield, тип значения, которое можно передать в генератор через send(), и тип значения, которое возвращается при завершении генератора.

Пример типизации генератора, который yield'ит целые числа и не принимает значения через send:

from typing import Generator

def count_up_to(max_value: int) -> Generator[int, None, None]:
    count = 0
    while count < max_value:
        yield count
        count += 1

Здесь Generator[int, None, None] означает, что генератор yield'ит int, не принимает значения через send (тип None), и возвращает None при завершении.

Если генератор принимает значения через send, например:

def echo() -> Generator[str, str, None]:
    received = yield "start"
    while True:
        received = yield received

Здесь Generator[str, str, None] означает, что генератор yield'ит строки, принимает строки через send, и возвращает None.