티스토리 뷰

1. 변수 타입 어노테이션

- 변수의 예상 타입을 명시하는데 사용

- 주로 코드의 가독성을 높이고, 정적 타입 검사 도구(예: mypy)를 사용하여

   타입 오류를 사전에 잡아내기 위한 목적으로 사용

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

 

2. 기본 타입 어노테이션

name = '김사과'
name: str = '김사과'

age = 10
age: int = 20

height = 160.5
height: float = 160.5

is_lover = True
is_lover: bool = True

print(name)
print(type(name))  # <class 'str'>

 

3. 리스트, 딕셔너리, 튜플, 세트 타입 어노테이션

from typing import List, Tuple, Dict, Set

names: List[str] = ['김사과', '오렌지', '반하나']   # names는 List면서 str로 구성되어 있음을 가독성 좋게 보여줌
age: Tuple[int, int] = (25, 20)  # age는 Tuple이면서 int 두 개로 구성되어 있음
student_scores: Dict[str, float] = {'김사과':90.5, '오렌지':88.5}
unique_numbers: Set[int] = {1, 2, 3, 3, 4}

print(names)
print(age)
print(student_scores)
print(unique_numbers)

 

4. 함수

def add(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__     # 타입 어노테이션(주석) 확인
# 결과 : {'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)
  # 원래는 메모리 주소가 찍힘, object 클래스를 오버라이딩, 내가 원하는 형태로 표현가능

def print_student(s: Student) -> None:
  print(f'이름:{s.name}, 나이:{s.age}')
  
student = Student('김사과', 20)
print(student) # 원래는 클래스 이름과 주소가 나옴

print_student(student)

 

6. 옵셔널

from typing import Optional
# 결과가 None 또는 float 형이다
def find_score(name: str, scores: Dict[str, float]) -> Optional[float]:  # 어떻게 나올지를 명시해준것
  return scores.get(name)
  
print(find_score('김사과', {'김사과':80.5, '오렌지':40.6, '반하나':90.4}))
# 결과 : 80.5

print(find_score('홍길동', {'김사과':80.5, '오렌지':40.6, '반하나':90.4}))
# 결과 : None

 

'Python' 카테고리의 다른 글

25. 디렉토리 관련 프로그램  (0) 2024.03.22
24. 파이썬의 파일 입출력 라이브러리  (1) 2024.03.22
22. (예제) 영어 단어장 만들기  (0) 2024.03.21
21. 파일 입출력  (0) 2024.03.21
20. 파이썬의 모듈  (0) 2024.03.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함