일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Selenium
- javascript
- python
- 선그래프
- 알고리즘스터디
- openCV
- 파이썬
- programmers
- 데이터시각화
- Matplotlib
- 자료구조
- type hint
- aws jupyter notebook
- MySQL
- 알고리즘
- pandas
- dataframe
- NumPy
- 가상환경
- 알고리즘 스터디
- queue
- 프로그래머스
- Stack
- Algorithm
- 정보처리기사 c언어
- 코딩테스트
- String Method
- 백준
- Join
- 노마드코딩
- Today
- Total
조금씩 꾸준히 완성을 향해
[Python] Type hint & Type check 기본개념(타입 힌트, 타입 체크) 본문
Type Hint
Python은 동적 언어이기 때문에 변수들의 타입을 마음대로 변경가능하다.
이는 파이썬의 장점으로 꼽히기도 하지만, 프로그램의 규모가 커지고 코드가 많아지게 되면 이 유연함이 도리어 단점이 되기도 한다. 특히 여러 사람이 같은 코드를 가지고 작업하거나 수정할 때에는 더 큰 혼선이 야기된다. 이를 방지하기 위해서는 공유하는 데이터의 타입을 정확히 지정해 줄 필요가 있다.
이 때 사용하는 게 바로 type hint이다.
※ 주의! 타입 힌트는 말그대로 힌트를 붙여놓은 것일 뿐, 타입 에러를 체크해 주는 기능은 아니다!
타입 힌트는 기본적으로 아래와 같이 변수 옆에 콜론으로 표시한다.
int_var: int = 88 #정수형
str_var: str = "hello world" #문자형
float_var: float = 88.9 #실수형
bool_var: bool = True #boolean
여러개의 값을 담는 집합형 데이터 타입의 경우에는 따로 모듈을 불러와서 사용해야 한다.
from typing import List, Tuple, Dict #type hint 모듈
list_var: List[str] = ["1", "2", "3"]
tuple_var: Tuple[int, ...] = (1, 3, 4)
dic_var: Dict[str, int] = {"hello": 77}
이렇게 안에 들어갈 값들의 데이터 타입도 같이 지정해 주는 게 좋다.
함수의 인자 타입을 지정할 경우에도 이렇게 콜론으로 표시하면 된다.
def cal_add(x: int, y: int) -> int:
return x + y
그러나 앞서 언급했듯이 타입이 지켜지지 않더라도 출력은 아주 잘된다.
print(cal_add(1, 3)) # 4
print(cal_add("1, ", "3, dsjkakljas")) # 1, 3, dsjkakljas
print(cal_add([1, 3], [4, 5])) # [1, 3, 4, 5]
원하던 인자는 정수였지만, 다른 타입이 들어오는 걸 막을 수는 없다.
이를 해결하기 위해서는 Type을 checking 해주는 기능을 따로 만들어 사용할 수 있다.
Type checking
isinstance(obj, class)
# isinstance(obj, class)
print(isinstance("ashdjkasd", str)) #True
print(isinstance(88.9, float)) #True
object의 class를 확인해 주는 isinstance 메소드를 사용해 새로운 함수를 정의할 수 있다.
def type_check(obj, typer) -> None:
if isinstance(obj, typer):
pass
else:
raise TypeError(f"Type Error : {typer}")
type checking을 수행하는 함수이며, 리턴값은 따로 없고 타입이 맞지 않을 경우 에러를 내뱉는 열할을 한다.
def cal_add(x: int, y: int) -> int:
# code
type_check(x, int)
type_check(y, int)
return x + y
기존 함수 안에 type_check 함수를 넣어 이런식으로 인자의 타입을 checking 해주면 실수 없이 정확한 코드를 짤 수 있다.
사실 더 쉽게 타입을 체킹하는 파이썬의 모듈이 존재한다. 그건 다음 번에!!
'Python > 문법' 카테고리의 다른 글
[Python] Typing & Type hint /다양한 타입 힌트 사용법 (0) | 2022.09.29 |
---|---|
[Python] mypy, pyright 설치 및 사용방법 (0) | 2022.09.29 |
[Python] 문자열 함수/문자 숫자 판단(isalpha, isdigit, isdecimal, isalnum) (0) | 2022.09.13 |
[Python] Decorator 기본 개념 (0) | 2022.09.12 |
[python] 파일 처리 / 파일 읽고 쓰기 (0) | 2022.09.04 |