Типовая аннотация Sequence
- это, вероятно, аннотация, которую вы ищете. Обратите внимание, что последовательность не совпадает с непотребляемой итерацией , как отмечено в комментарии. Однако, если вы хотите, чтобы ваша итерация не использовалась, весьма вероятно, что вы также хотите, чтобы аргумент поддерживал len
и __getitem__
.
Из mypy docs :
Используйте Iterable
для универсальных итераций c (что-либо пригодное для использования в for
) и Sequence
, где требуется последовательность (поддерживающая len
и __getitem__
).
A последовательность также определена в глоссарии python.
Итак, чтобы ответить на следующую часть вопроса, вероятная причина, почему аннотации для непотребляемых итерируемых не существует в основной библиотеке, потому что это не очень распространенный вариант использования. Тем не менее, если вам нужен действительно один, вы можете реализовать его с помощью generics