1. 변수 타입 어노테이션
변수 타입 어노테이션은 파이썬 3.5부터 도입된 기능으로, 변수의 예상 타입을 명시하는데 사용됩니다. 이는 주로 코드의 가독성을 높이고, 정적 타입 검사 도구(예: mypy)를 사용하여 타입 오류를 사전에 잡아내기 위한 목적으로 사용됩니다.
타입 어노테이션은 실제로 변수의 타입을 강제하는 것이 아니라, 개발자가 변수가 어떤 타입을 가져야 할 것으로 예상하는지 명시하는 것입니다.
2. 기본 타입 어노테이션
[기본]
name = "김사과"
age = 20
height = 160.5
is_lover = True
[어노테이션]
name: str = "김사과"
age: int = 20
height: float = 160.5
is_lover: bool = True
3. 리스트, 튜플, 딕셔너리, 세트
컬렉션 타입에 대한 어노테이션은 조금 더 복잡합니다. 이를 위해 List, Tuple, Dict, Set 등의 제네릭 타입을 사용하게 됩니다. 이러한 타입들은 typing 모듈에서 가져올 수 있습니다.
[기본]
names = ["김사과", "오렌지", "반하나"]
age = (25, 20)
student_scores = {"김사과": 90.5, "오렌지": 88.0}
unique_numbers = {1, 2, 3, 3, 4}
[어노테이션]
from typing import List, Tuple, Dict, Set
names: List[str] = ["김사과", "오렌지", "반하나"]
age: Tuple[int, int] = (25, 20)
student_scores: Dict[str, float] = {"김사과": 90.5, "오렌지": 88.0}
unique_numbers: Set[int] = {1, 2, 3, 3, 4}
4. 함수
함수의 매개변수와 반환 타입에 대한 어노테이션은 다음과 같이 합니다
[기본]
def add(a,b) :
return
[어노테이션]
def add(a: int, b: int) -> int: # a는 int, b는 int, 결과는 int 자료형으로 처리
return a + b
print(add(10,3))
print(add("십", "삼")) # 에러가 발생하지는 않음
print(add("십", 3)) # 에러
print(add("10", "3")) # 에러가 발생하지는 않음
# 타입 어노테이션을 확인
add.__annotations__
13 십삼 103 {'a': int, 'b': int, 'return': 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('김사과', 20)
print(student)
print_student(student)
이름:김사과, 나이:20 이름:김사과, 나이:20 |
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('이메론', {'이메론':100, '오렌지':40, '반하나':90}))
80.5 none |
'Python > 개념' 카테고리의 다른 글
Day 10. 디렉토리 관리 프로그램 (0) | 2024.03.22 |
---|---|
Day 9-2. 파일 입출력 라이브러리 (0) | 2024.03.21 |
Day 8-2. 파일 입출력 (0) | 2024.03.20 |
Day 8-1. 파이썬 모듈 (0) | 2024.03.20 |
Day 7. 과제_주민번호 유효성 검사 (0) | 2024.03.20 |