Python type hinting

seokj·2023년 1월 20일
0

파이썬은 Dynamic typing이다. 런타임 중에 한 변수의 타입이 바뀔 수 있다는 의미이다. 보통 코드편집기에서는 타입에 따라 그 변수의 메소드를 사용하고 싶을 때 목록을 나열해서 사용하기 쉽게 해준다. 하지만 파이썬의 Dynamic Typing의 경우 코드편집기가 타입을 추론하지 못하는 경우가 있는데 이 때는 이런 도움을 받을 수 없다. 그래서 파이썬에서는 type hinting을 지원한다. 주석처럼 실행할 땐 아무런 의미가 없지만 어떤 변수의 타입이 어떤 것이라고 지정해서 코드편집기의 도움을 받을 수 있게 해준다.

Dynamic typing과 관련한 용어의 자세한 내용은 여기를 참고하자.


참고 자료:
https://stackoverflow.com/questions/69982190/python-type-hints-in-for-loop
https://peps.python.org/pep-0526/#where-annotations-aren-t-allowed
https://stackoverflow.com/questions/41641449/how-do-i-annotate-types-in-a-for-loop


a = 3
a: int = 3

위 코드의 첫 째줄과 같이 그냥 변수를 선언할 수도 있지만 둘 째줄처럼 int형임을 명시하여 명확하게 나타낼 수 있다. 만약 3이 아니라 복잡한 클래스를 반환하는 함수라던가 하는 경우에 이 방법이 도움이 된다.

def f(a: int):
    return a + 1

함수의 매개변수에서도 자료형을 명시할 수 있다.

i: int
for i in range(3):
    pass

for loop에서는 위 코드처럼 i를 바로 hinting을 할 수는 없지만 위에서 미리 자료형을 선언하여 적용할 수 있다.

a: int; b: str
a, b = tuple(3, 'a string')

tuple을 언패킹하면서도 바로 hinting을 할 수 없다. 위에서 미리 자료형을 명시하여 적용해야 한다.


i: int
for i in range(3):
    pass
for i in range(3):
    i: int
    pass

위 두 가지 방법 중 일반적으로 전자의 방법을 많이 사용한다. 하지만 둘 다 정상적으로 작동하며 선호하는 것을 고르면 된다.

profile
안녕하세요

0개의 댓글