Esiste un suggerimento di tipo corretto da utilizzare per un file o un oggetto simile a un file in Python? Ad esempio, come faccio a digitare il suggerimento sul valore di ritorno di questa funzione?
def foo():
return open('bar')
Esiste un suggerimento di tipo corretto da utilizzare per un file o un oggetto simile a un file in Python? Ad esempio, come faccio a digitare il suggerimento sul valore di ritorno di questa funzione?
def foo():
return open('bar')
Risposte:
Utilizzare i tipi typing.TextIOo typing.BinaryIOper i file aperti rispettivamente in modalità testo o in modalità binaria.
Dai documenti :
classe
typing.IOSpazio dei nomi wrapper per i tipi di flusso I / O.
Definisce il tipo
IO[AnyStr]e gli alias genericiTextIOeBinaryIOrispettivamente perIO[str]eIO[bytes]. Questi rappresentano i tipi di flussi di I / O come restituiti daopen().
def f() -> IO: return open('test')dà "Tipo previsto 'IO', ottenuto invece 'TextIOWrapper [str]'" in PyCharm.
IO[str]?
La risposta breve:
from typing import TextIOsolo from typing import *.IOper indicare un file senza specificare di che tipoTextIOo BinaryIOse conosci il tipoCome esempio:
from typing import BinaryIO
def binf(inf: BinaryIO):
pass
with open('x') as f:
binf(f)
dà un errore di ispezione (in PyCharm) di Expected type 'BinaryIO', got 'TextIO' instead