카테고리 없음

2024.03.21 8일차

동동순이 2024. 3. 21. 16:53
변수 타입 어노테이션

 

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

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

 

기본 타입 어노테이션

 

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

초반에 배운것과 같이 '김사과' 문자열을 입력해주고 print 해주면 

김사과
<class 'str'>

다음과 같이 나온다

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

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

names = ['김사과','오렌지','반하나']
names: List[str] = ["김사과", "오렌지", "반하나"]
age = (25,20)
age:Tuple[int,int]=(25,20)
student_scores={'김사과':90.5,'오렌지':88.0}
student_scores: Dict[str, float] = {"김사과": 90.5, "오렌지": 88.0}
unique_numbers = {1,2,3,4,5}
unique_numbers: Set[int] = {1, 2, 3, 3, 4}
['김사과', '오렌지', '반하나']
(25, 20)
{'김사과': 90.5, '오렌지': 88.0}
{1, 2, 3, 4}

결과 값은 다음과 같이 나온다. 쉬운 내용이니 넘어가도록 하겠다.

 

함수

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

 

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

 

13
십삼

 두번째 코드에서 →int는 a,b 결과값을 int로 처리한다는 뜻이다.

 

클래스

 

클래스 또는 사용자 정의 타입에 대한 어노테이션도 가능합니다.

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😥

코드에서 미리 명시했던 데로 문자열로 결과값이 나온다.

 

옵셔널

 

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

아래에 값은 위에서 optinal로 none값을 주었기 때문에 none이나온다.