Có gợi ý loại chính xác nào để sử dụng cho tệp hoặc đối tượng giống tệp trong Python không? Ví dụ, làm cách nào để gõ-gợi ý giá trị trả về của hàm này?
def foo():
return open('bar')
Có gợi ý loại chính xác nào để sử dụng cho tệp hoặc đối tượng giống tệp trong Python không? Ví dụ, làm cách nào để gõ-gợi ý giá trị trả về của hàm này?
def foo():
return open('bar')
Câu trả lời:
Sử dụng một trong hai typing.TextIOhoặc typing.BinaryIOcác loại, cho các tập tin đã mở trong chế độ văn bản hoặc chế độ nhị phân tương ứng.
Từ các tài liệu :
lớp học
typing.IOKhông gian tên gói cho các loại luồng I / O.
Điều này xác định loại chung
IO[AnyStr]và bí danhTextIOvàBinaryIOcho tương ứngIO[str]vàIO[bytes]. Chúng đại diện cho các loại luồng I / O chẳng hạn như được trả về bởiopen().
def f() -> IO: return open('test')đưa ra "Loại mong đợi là 'IO', thay vào đó là 'TextIOWrapper [str]'" trong PyCharm.
IO[str]sao?
Câu trả lời ngắn gọn:
from typing import TextIOkhông chỉ là from typing import *.IOnghĩa là một tệp mà không chỉ định loạiTextIOhoặc BinaryIOnếu bạn biết loạiVí dụ:
from typing import BinaryIO
def binf(inf: BinaryIO):
pass
with open('x') as f:
binf(f)
đưa ra lỗi kiểm tra (trong PyCharm) Expected type 'BinaryIO', got 'TextIO' instead