본문 바로가기
코딩/파이썬

변수 타입 어노테이션

by Song1234 2024. 3. 21.

1. 변수 타입 어노테이션

변수 타입 어노테이션은 파이썬 3.5부터 도입된 기능으로, 변수의 예상 타입을 명시하는데 사용됩니다. 이는 주로 코드의 가독성을 높이고, 정적 타입 검사 도구(예: mypy)를 사용하여 타입 오류를 사전에 잡아내기 위한 목적으로 사용됩니다.

타입 어노테이션은 실제로 변수의 타입을 강제하는 것이 아니라, 개발자가 변수가 어떤 타입을 가져야 할 것으로 예상하는지 명시하는 것입니다.

2. 기본타입 어노테이션

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

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

컬렉션 타입에 대한 어노테이션은 조금 더 복잡합니다. 이를 위해 List, Tuple, Dict, Set 등의 제네릭 타입을 사용하게 됩니다. 이러한 타입들은 typing 모듈에서 가져올 수 있습니다.

from typing import List, Tuple, Dict, Set
names = ['김사과', '오렌지', '반하나']
names: List[str] = ['김사과', '오렌지', '반하나']
age = (25, 20)
age: Tuple[int, int] = (25, 20)
student_scores: Dict[str, float] = {'김사과': 90.5,'오렌지':80.0}
uniqe_numbers: Set[int] = {1, 2, 3, 3, 4}
print(names)
print(age)
print(student_scores)
print(uniqe_numbers)

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))
add.__annotations__

5. 클래스

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)
print_student(student)

6. 옵셔널

변수가 특정 타입이거나 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}))
print(find_score('이메론', {'김사과':80.5, '오렌지':40.8, '반하나':90.4}))

'코딩 > 파이썬' 카테고리의 다른 글

데이터베이스와 MongoDB  (1) 2024.06.07
디렉토리 관리 프로그램  (1) 2024.03.22
파일 입출력을 이용한 단어장 만들기  (0) 2024.03.21
파이썬 파일입출력  (0) 2024.03.20
파이썬 모듈  (0) 2024.03.20