Python 코드에서 ... 의 의미 ( 타입 힌팅 )

Python에서 '...' 문법은 생략 부호라고 부르며 pass의 역할을 한다.
pass를 써도 문제 없지만 더 표현이 간결하기 때문에 쓰임.

다음은 python의 system 패키지 __init__.pyi이다.
    @property
    def dev_mode(self) -> bool: ...
    @property
    def utf8_mode(self) -> int: ...

위 프로퍼티 데코레이터가 적용된 함수에서
실제 기능은 구현되지 않은 것을 볼 수 있는데
인터페이스를 정의할 때 자주 사용한다.
(인터페이스는 상세적인 구현이 없다.)



< .pyi 파일에 대해서 >

.pyi 파일은 빌트인 모듈이고 Type Stub files를 연다.
빌트인 모듈이라하면은, python 패키지를 설치했을 때(CPython)
자동으로 딸려오게 되는 모듈을 의미한다.

이 파일들은 sys 모듈의 built-on 모듈들이고
단지 함수의 사인과, 변수들만을 표현할 뿐 실제 공식 Python 코드가 없다.
(Input/ outpt) & type Hinting

실제 로직은 C에 숨겨져있다.




< .py 파일과 .pyi >

그래서 .py파일과 .pyi를 비교해보면
.py는 실제 로직이 구현된 코드고
.pyi는 구현 메뉴얼이라고 보면 된다. -> Python 인터프리터는 실행하지 않는다.

타입 힌트를 적용한 코드를 .py에 구현할 수 있고
또 framework과 pydantic 유저라면 .py에 구현하는 것이 익숙하지만

C 확장 모듈이나
구형 라이브러리에 타입힌팅을 적용할 때, 
직접 소스코드에 타입힌팅을 하면 오류가 많아지니까
라이브러리와 별개로 .pyi파일을 같이 제공할 수 있다.
이렇게 하면 type checker 가 .pyi 파일을 먼저 참조한다.


 









다른 ... syntax 사용례

1. Type hinting: Tuple[int, ...] -> 많은 양의 int 로 이루어진 튜플

2. Callable: [..., int] -> 어떤 개수의 argument도 받을 수 있고, intger를 return. 

2. Numpy-slicing: Callable -> 행렬의 특정 행 및 열을 제거 및 생략할 때









댓글

이 블로그의 인기 게시물

Blogger 커스터마이징 : CSS 수정 (sticky-header)

Vue 첫 걸음

Python의 빌트인 class들의 관계