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()
.
답변
짧은 대답 :
- 명시 적이어야합니다. 그것은
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