1. 변수 타입 어노테이션

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

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

 

2. 기본 타입 어노테이션

name : str = '푸바오'
age : int = 3
height : float = 120.5
is_lover : bool = True


print(name)
print(type(name))
더보기
푸바오
<class 'str'>

 

 

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

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

from typing import List, Tuple, Dict, Set

names : List[str] = ['푸바오', '루이바오', '후이바오']
age : Tuple[int, int] = (25, 20)
scores : Dict[str, float] = {'푸바오' : 50, '아이바오' : 100}
numbers : Set[int] = {1, 2, 3, 3, 4}


print(names)
print(age)
print(scores)
print(numbers)
더보기
['푸바오', '루이바오', '후이바오']
(25, 20)
{'푸바오': 50, '아이바오': 100}
{1, 2, 3, 4}

 

 

4. 함수

함수의 매개변수와 반환 타입에 대한 어노테이션은 다음과 같이 합니다.

def add(a: int, b: int) -> int: # a는 int, b는 int, 결과(리턴값)는 int 자료형으로 처리
    return a + b
    
print(add(10, 5))
print(add('10','삼'))

print(add.__annotations__) # 타입 어노테이션을 확인
더보기
15
10삼
{'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}

 

 

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('푸바오', 3)
print(student)
print_student(student)
더보기
이름:푸바오, 나이:3
이름:푸바오, 나이:3

 

 

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.5, '아이바오':90.5}))
print(find_score('러바오', {'푸바오':80.5, '대나무':40.5, '아이바오':90.5}))
더보기
80.5
None

'컴퓨터 비전 > 파이썬 기초' 카테고리의 다른 글

21. 파이썬 동기/비동기  (0) 2023.12.13
19. 파이썬 모듈  (0) 2023.12.13
18. 파이썬 예외처리  (0) 2023.12.12
17. 스페셜 메서드  (0) 2023.12.12
16. 파이썬 상속  (0) 2023.12.12