在Python中,对于文件或类文件对象是否有正确的类型提示?例如,我将如何键入提示这个函数的返回值?
def foo() -> ???:
return open('bar')
在Python中,对于文件或类文件对象是否有正确的类型提示?例如,我将如何键入提示这个函数的返回值?
def foo() -> ???:
return open('bar')
使用打字中的任何一种。TextIO或打字。BinaryIO类型,分别用于以文本模式或二进制模式打开的文件。
从文档中可以看出:
类类型。IO I/O流类型的包装器名称空间。 这定义了泛型类型IO[AnyStr]和别名TextIO和BinaryIO分别为IO[str]和IO[bytes]。这些表示I/O流的类型,例如open()返回的流。
简单的回答是:
你需要明确。这是通过输入import TextIO,而不仅仅是输入import *。 使用IO表示不指定类型的文件 如果知道类型,可以使用TextIO或BinaryIO 当前不能指定打开该文件进行写入或其编码。
举个例子:
from typing import BinaryIO
def binf(inf: BinaryIO):
pass
with open('x') as f:
binf(f)
给出一个检查错误(在PyCharm中)的预期类型'BinaryIO',得到'TextIO'代替