在Python中是否有用于文件或类文件对象的正确类型提示?例如,我如何键入提示此函数的返回值?
def foo():
return open('bar')
答案 0 :(得分:43)
对于分别以文本模式或二进制模式打开的文件,请使用typing.TextIO
或typing.BinaryIO
类型。
来自the docs:
class
typing.io
I / O流类型的包装器命名空间。
这分别为
IO[AnyStr]
和TextIO
定义了通用类型BinaryIO
和别名IO[str]
和IO[bytes]
。这些表示I / O流的类型,例如open()
返回的。
答案 1 :(得分:1)
简短答案:
from typing import TextIO
而不仅仅是from typing import *
。IO
表示文件而不指定类型TextIO
或BinaryIO
例如:
from typing import BinaryIO
def binf(inf: BinaryIO):
pass
with open('x') as f:
binf(f)
给出了Expected type 'BinaryIO', got 'TextIO' instead
的检查错误(以PyCharm表示)
答案 2 :(得分:-2)
您可以分别对文本文件和二进制文件使用TextIO和BinaryIO。