Чи існує якийсь правильний підказка щодо типу для файлу або файлоподібного об'єкта в Python? Наприклад, як би я ввів натяк на повернення значення цієї функції?
def foo():
return open('bar')
Чи існує якийсь правильний підказка щодо типу для файлу або файлоподібного об'єкта в Python? Наприклад, як би я ввів натяк на повернення значення цієї функції?
def foo():
return open('bar')
Відповіді:
Використовуйте typing.TextIOабо typing.BinaryIOтипи, або для файлів, відкритих у текстовому режимі або двійковому режимі відповідно.
З документів :
клас
typing.IOОбгортковий простір імен для типів потоків вводу-виводу.
Це визначає загальний тип
IO[AnyStr]та псевдоніми,TextIOа такожBinaryIOвідповідноIO[str]іIO[bytes]. Вони представляють типи потоків вводу-виводу, такі як повернутіopen().
def f() -> IO: return open('test')дає "Очікуваний тип" IO ", замість цього отримав" TextIOWrapper [str] '"у PyCharm.
IO[str]?
Коротка відповідь:
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)
видає помилку перевірки (у PyCharm) Expected type 'BinaryIO', got 'TextIO' instead