반응형
코드 >>
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"
반응형
'파이썬(Python) > 문법' 카테고리의 다른 글
파이썬 deque 사용하는 이유 / popleft (4) | 2020.12.08 |
---|---|
linked list / 연결리스트 란? 파이썬 (0) | 2020.12.07 |
파이썬 sys.getsizeof 변수 크기/사이즈 확인 (0) | 2020.12.04 |
if in 구문, for in 구문 (0) | 2020.12.03 |
ASCII vs Unicode(유니코드) vs UTF-8 차이 (0) | 2020.12.03 |