파이썬은 동적 타입언어라서 관련 오류가 생길 수있는데
변수의 예상 타입을 알려줌으로써 오류를 방지한다.
1. 기본 타입 어노테이션
name = '김사과'
name: str = '김사과'
age = 10
age: int = 10
height = 176.5
height: float = 176.5
is_Lover = True
is_Lover: bool = True
2. 컬렉션 타입 어노테이션
from typing import List, Tuple, Dict, Set
# 리스트 타입 어노테이션
names = ['김사과', '오렌지', '반하나']
names: List[str] = ['김사과', '오렌지', '반하나']
names: List[int] = ['김사과', '오렌지', '반하나'] # List[타입] 이외의 요소가 들어와도 에러가 나지는 않음
# kim: List[str, int, float] = ['김사과', 20, 160.5]
print(names)
# 튜플 어노테이션
age = (25, 20)
age: Tuple[int, int] = (25,20)
print(age)
# 딕셔너리 타입 어노테이션
student_scores = {'김사과': 90.5, '오렌지':88.3}
student_scores: Dict[str, float] = {'김사과': 90.5, '오렌지':88.3}
print(student_scores)
# 세트 타입 어노테이션
unique_numbers = {1,2,3,3,4}
unique_numbers: Set[int] = {1,2,3,3,4}
print(unique_numbers)
3. 매개변수 타입 어노테이션
def add(a: int, b: int) -> int:
return a + b
print(add(10,3)) # 13
print(add('십','삼')) # 십삼
# => 결론적으로 강제성을 부여하는 건 아니다. 단순 참고용
# 함수의 어노테이션을 보는 방법
add.__annotations__ # {'a': int, 'b': int, 'return': int}
4. 클래스의 변수 타입 어노테이션
class Student:
def __init__(self, name: str, age: int):
self.name = name
self.age = age
def __str__(self) -> str:
return f'이름 : {self.name}, 나이 : {str(self.age)}'
def print_student(s:Student) -> None:
print(f'이름 : {s.name}, 나이 : {str(s.age)} 🎃')
student = Student('김사과', 20)
print(student) # 이름 : 김사과, 나이 : 20
print_student(student) # 이름 : 김사과, 나이 : 20 🎃
5. 옵셔널 (Optional)
from typing import Optional
def find_score(name: str, scores: Dict[str, float]) -> Optional[float]:
return scores.get(name)
print(find_score('김사과', {'김사과':80.5, '오렌지':40.8, '반하나':90.5})) # 80.5
print(find_score('이메론', {'김사과':80.5, '오렌지':40.8, '반하나':90.5})) # None
6. 유니온 (Union)
파이썬에서 공식적인 방법이 아니라 우회하는 방식이므로 권장하지 않음
7. 파이널 (Final)
재할당이 불가능한 상수에 대한 타입 어노테이션
'Python > 개요 및 문법' 카테고리의 다른 글
디렉토리 관리 프로그래밍 (1) | 2024.10.07 |
---|---|
파일 입출력 모드 (4) | 2024.10.02 |
파일 입출력 (0) | 2024.10.02 |
모듈 (Module) (feat. 파이참 설치) (0) | 2024.10.02 |
예외 (Exception) (0) | 2024.09.30 |