Python Glossary English

Python 3.5+typingпонятие

typing.IO

потоки ввода-вывода

Обобщённый тип файловых объектов (потоков) для аннотаций; параметризуется типом элемента (str или bytes).

Синтаксис

def f(stream: typing.IO[str]) -> None: ...

На практике вместо IO[str] и IO[bytes] чаще берут специализированные TextIO и BinaryIO — те же потоки, но с дополнительными атрибутами (encoding, buffer и т.п.) и более читаемым именем. Сам IO нужен, когда параметру важен только факт «это поток» независимо от конкретного класса — результат open(), io.StringIO, обёртка над сокетом.

Примеры

from typing import IO
import io
print(IO.__name__)   # → IO
print(IO[str])   # → typing.IO[str]
from typing import IO
import io
def read_all(stream: IO[str]) -> str: return stream.read()
print(read_all(io.StringIO('hello world')))   # → hello world
print(isinstance(io.StringIO(), IO))   # → False

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности