파이썬(Python)/문법

파이썬 typing모듈 왜 사용하나? , mypy 검사

끄적끄적아무거나 2020. 12. 7. 16:11
반응형

 

코드 >>

import typing

a_var: str = "hello"
a_var = 5
print(a_var)

def typing_check(b_var: str):
    print(b_var)

typing_check(6)    

c_var: typing.List[int] = [1, 2, 3]
c_var.append("hi")
print(c_var)

 

 

결과 >>

5
6
[1, 2, 3, 'hi']

 

 

주석>>

파이썬은 동적 할당을 한다.

 

예를 들어 리스트가 있으면 append로 추가적으로 리스트 값을 늘릴 수도 있고 변수에 int 를 넣었다가 string으로 변경도 가능하다.

 

컴파일 언어들은 컴파일 과정에서 문제를 발견할 수 있다.

 

하지만 파이썬의 경우 코드를 짜는 사람의 휴먼 에러로 잘못된 값을 할당하고도 모르고 지나갈 수 있다.

 

위의 코드처럼 값에 대한 정의를 세미콜론 (:) 또는 typing으로 할 수 있다.

 

하지만 정의를 한다고 해도 동적 할당을 하면서 정의 된 값을 위의 결과 처럼 덮어 버린다.

 

이런 부분을 컴파일러 언어처럼 확인하기 위해 필요한 모듈이 mypy이다. (pip로 인스톨해야함)

 

아래처럼 mypy를 사용하면 코드에서 사용자가 정의한 방식에 맞지 않는 부분을 알려준다.

 

mypy 예제>>

PS C:\Users\forgo\Documents\Visual Studio 2015\rpa_basic> mypy 'c:\Users\forgo\Documents\Visual Studio 2015\rpa_basic\test.py'
c:\Users\forgo\Documents\Visual Studio 2015\rpa_basic\test.py:4: error: Incompatible types in assignment (expression has type "int", variable has type "str")
c:\Users\forgo\Documents\Visual Studio 2015\rpa_basic\test.py:10: error: Argument 1 to "typing_check" has incompatible type "int"; expected "str"
c:\Users\forgo\Documents\Visual Studio 2015\rpa_basic\test.py:13: error: Argument 1 to "append" of "list" has incompatible type "str"; expected "int"

 

 

 

 

반응형