Python에서 파일 또는 파일 류 객체에 사용할 올바른 유형 힌트가 있습니까? 예를 들어,이 함수의 반환 값을 어떻게 입력 힌트 할 수 있습니까?
def foo():
return open('bar')
답변:
텍스트 모드 또는 바이너리 모드로 열린 파일에 대해 각각 typing.TextIO
또는 typing.BinaryIO
유형을 사용하십시오 .
에서 워드 프로세서 :
수업
typing.IO
I / O 스트림 유형에 대한 래퍼 네임 스페이스입니다.
이 제네릭 형식 정의
IO[AnyStr]
와 별칭TextIO
과BinaryIO
각각에 대한IO[str]
과를IO[bytes]
. 에서 반환하는 I / O 스트림의 유형을 나타냅니다open()
.
def f() -> IO: return open('test')
PyCharm에서 "예상 유형 'IO', 대신 'TextIOWrapper [str]'을 얻었습니다."를 제공합니다.
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