카테고리 없음
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이나온다.