Python/개요 및 문법

변수 타입 어노테이션

Bambi97 2024. 10. 2. 16:40

파이썬은 동적 타입언어라서 관련 오류가 생길 수있는데

변수의 예상 타입을 알려줌으로써 오류를 방지한다.

 

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