在Python中,对于文件或类文件对象是否有正确的类型提示?例如,我将如何键入提示这个函数的返回值?
def foo() -> ???: return open('bar')
对于以文本模式或二进制模式打开的文件,分别使用typing.TextIO或typing.BinaryIO类型。
typing.TextIO
typing.BinaryIO
从的文档:
类 typing.IO I/O流类型的包装器名称空间。 这定义了泛型类型IO[AnyStr]和别名TextIO和BinaryIO分别为IO[str]和IO[bytes]。这些表示I/O流的类型,如open()返回的。
typing.IO
I/O流类型的包装器名称空间。
这定义了泛型类型IO[AnyStr]和别名TextIO和BinaryIO分别为IO[str]和IO[bytes]。这些表示I/O流的类型,如open()返回的。
IO[AnyStr]
TextIO
BinaryIO
IO[str]
IO[bytes]
open()
简单的回答是:
from typing import TextIO
from typing import *
IO
举个例子:
from typing import BinaryIO def binf(inf: BinaryIO): pass with open('x') as f: binf(f)
给出Expected type 'BinaryIO', got 'TextIO' instead的检查错误(在PyCharm中)
Expected type 'BinaryIO', got 'TextIO' instead