web-dev-qa-db-ja.com

ジェネレーター関数の戻り型のヒントは何ですか?

私は:rtype:ジェネレーター関数のタイプヒント。返される型は何ですか?

たとえば、文字列を生成する次の関数があるとします。

def read_text_file(fn):
    """
    Yields the lines of the text file one by one.
    :param fn: Path of text file to read.
    :type fn: str
    :rtype: ???????????????? <======================= what goes here?
    """
    with open(fn, 'rt') as text_file:
        for line in text_file:
            yield line

戻り値の型は単なる文字列ではなく、文字列の反復可能性のようなものですか?だから私はただ:rtype: str。適切なヒントは何ですか?

ジェネレーター

Generator[str, None, None]またはIterator[str]

18
aristotll

ジェネレータに注釈を付けるための一般的なタイプは、 typing モジュールによって提供されるGenerator[yield_type, send_type, return_type]です。

def echo_round() -> Generator[int, float, str]:
    res = yield
    while res:
        res = yield round(res)
    return 'OK'

または、Iterable[YieldType]またはIterator[YieldType]を使用できます。

19
Eugene Yarmash