기본적으로 동적 프로그램 언어인 파이썬에서는 명시적으로 type을 지정하지 않고 실행중에 추론하여 처리하게 되는데, 이로인해 코드 규모가 커질 경우 가독성이 떨어지는 단점이 있다. 개인적으로도, 다른 사람이 작성한 코드를 분석해야 할 경우에 불편함이 상당했다.
python 3.5 버전부터 type hint 가 지원되어 코드 가독성에 도움을 줄 수 있게 되었고, typing 모듈을 import하여 type hint 를 다양하게 설정할 수 있었다.
python 3.10 버전부터는 typing 모듈 사용없이 좀더 간결한 방법을 사용할 수 있는데, 아래와 같이 or 연산자 사용이 가능하다.
# arg1의 type은 int 또는 None
# return type은 int 또는 None 요소를 포함하는 list
def function1(arg1: int | None = 10) -> list[int | None]:
print(type(arg1)
return [1, 2, 3]
가독성에도 도움을 줄 뿐만 아니라, pycharm 과 같은 IDE 사용시 정적으로 type을 체크하여 확인이 가능하게 되어 편리하다.
하지만, type hint 는 말그대로 힌트이며, 명시한 type 에 상관없이 코드는 실행된다. 가독성에 도움이 되고 IDE 를 통한 활용이 가능한 것이지 type 사용의 제약을 강요하지 않는다.
__annotations__ 키워드를 통해 annotation을 확인할 수 있다.
>>> function1.__annotations__
{'arg1': int | None, 'return': list[int | None]}
저걸 활용하면 코드 내에서 type check를 할 수 있도록 구현해 볼 수는 있겠다.
>>> types = function1.__annotations__
>>> types['arg1'].__args__
(<class 'int'>, <class 'NoneType'>)
>>> int in types['arg1'].__args__
True
반응형
'프로그래밍 > python' 카테고리의 다른 글
Anaconda env 설치경로 변경 (0) | 2023.12.22 |
---|---|
[IntelliJ] Commit Changes 창에서의 spelling check 해제 (1) | 2023.11.30 |
Qt Designer 설치 (for PyQt6, PySide6) (4) | 2023.11.25 |
[python] 암호화 package (cryptography, pycryptodome) (0) | 2023.09.19 |
Anaconda command list (1) | 2023.06.21 |