본문 바로가기

코딩/파이썬

변수 타입 어노테이션

변수 타입 어노테이션

: 파이썬 3.5부터 도입된 기능으로, 변수의 예상 타입을 명시하는데 사용된다.

주로 코드의 가독성을 높이고,

정적 타입 검사 도구(예:mypy)를 사용하여 타입 오류를 사전에 잡아내기 위한 목적으로 사용된다.

타입 어노테이션은 실제로 변수의 타입을 강제하는 것이 아니라,

개발자가 변수가 어떤 타입을 가져야 할 것으로 예상하는지 명시하는 것이다.

 

기본 타입 어노테이션

name = '김사과'
name: str = '김사과'
age = 10
age: int = 10
height = 160.5
height: float = 160.5
is_lover = True
is_lover : bool = True
print(name)
print(type(name)) 

김사과

<class 'str'>

 

리스트, 튜플, 딕셔너리, 세트

from typing import List, Tuple, Dict, Set
names = ['김사과', '오렌지', '반하나']
names: List[str] =['김사과', '오렌지', '반하나']

 

(25, 20)
age: Tuple[int, int] = (25, 20)
student_scores = {"김사과": 90.5, "오렌지":88.0}
student_scores: Dict[str, float] = {"김사과": 90.5, "오렌지":88.0}
unique_numbers = {1, 2, 3, 3, 4}
unique_numbers: Set[int] = {1, 2, 3, 3, 4}

['김사과', '오렌지', '반하나']

(25, 20)

{"김사과": 90.5, "오렌지":88.0}

{1, 2, 3, 4}

 

함수

def add(a, b):
    return a + b
# a는 int, b는 int, 결과는 int 자료형으로 반환
def add(a: int, b: int) -> int: 
    return a + b
print(add(10, 3))
print(add('십', '삼')) # 에러가 발생하지는 않음
# print(add('십', 3))

13

십삼

# 타입 어노테이션을 확인
add.__annotations__

{'a': int, 'b': int, 'return': int}

 

클래스

class Student:
	def __init__(self, name: str, age: int):
    	self.name = name
        self.age = age
    def __str__(self) -> str:
    	return '이름: '+ self.name + ', 나이: ' + str(self.age)

def print_student(s: Student) -> None:
	print(f'이름:{s.name}, 나이:{s.age}')
student = Student('김사과', 20)
print(student)

이름 : 김사과, 나이 : 20

print_student(student)

이름 : 김사과, 나이 : 20

 

옵셔널

: 변수가 특정 타입이거나 None일 수 있는 경우 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.4}))

80.5