2017-02-14 4 views
-1

Какова правильная аннотация для функции, возвращающая generator expression?Аннотации типа PEP 484 для выражения генератора

.: например

def foo(): 
    return (x*x for x in range(10)) 

Я не могу понять, если это -> Iterator[int], -> Iterable[int], -> Generator[int, None, None], или что-то еще.

Если должно быть одно-- и предпочтительно только один --obvious способ сделать это, то, что является очевидным способом здесь?

ответ

1

Все три формы, упомянутые вами, указаны как valid alternatives in documentation, выражение генератора просто создает генератор, который дает только.

Сообщения 1:

Генератор может быть прокомментирован общим типом Generator[YieldType, SendType, ReturnType].

Цитата 2:

Если ваш генератор только дают значения, установите SendType и ReturnType к None

Цитата 3:

В качестве альтернативы, аннотировать генератор как имеющий тип возврата либо Iterable[YieldType], либо Iterator[YieldType]:

Смежные вопросы