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.TextIO
o typing.BinaryIO
per i file aperti rispettivamente in modalità testo o in modalità binaria.
Dai documenti :
classe
typing.IO
Spazio dei nomi wrapper per i tipi di flusso I / O.
Definisce il tipo
IO[AnyStr]
e gli alias genericiTextIO
eBinaryIO
rispettivamente 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 TextIO
solo from typing import *
.IO
per indicare un file senza specificare di che tipoTextIO
o BinaryIO
se 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