[python] 파일이나 파일 류 객체에 대한 힌트를 입력 하시겠습니까?

Python에서 파일 또는 파일 류 객체에 사용할 올바른 유형 힌트가 있습니까? 예를 들어,이 함수의 반환 값을 어떻게 입력 힌트 할 수 있습니까?

def foo():
    return open('bar')



답변

텍스트 모드 또는 바이너리 모드로 열린 파일에 대해 각각 typing.TextIO또는 typing.BinaryIO유형을 사용하십시오 .

에서 워드 프로세서 :

수업 typing.IO

I / O 스트림 유형에 대한 래퍼 네임 스페이스입니다.

이 제네릭 형식 정의 IO[AnyStr]와 별칭 TextIOBinaryIO각각에 대한 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


답변