본문 바로가기
Python/개념

Day 9-1. 변수 타입 어노테이션

by 사라리24 2024. 3. 21.
SMALL

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