본문 바로가기
실버를 위한 코딩/파이썬 연습

[파이썬 연습] 어노테이션과 타입 힌트

by forSilver 2024. 8. 13.
반응형

파이썬에서 타입 힌트(Type Hint)는 함수의 인자와 반환값의 타입을 명시하여 코드의 가독성을 높이고, 코드 분석 도구나 IDE가 타입을 추론하는 데 도움을 주기 위해 사용됩니다. 어노테이션(Annotation)은 이러한 타입 힌트를 사용하는 방법입니다.

타입 힌트의 기본 사용법

타입 힌트는 함수의 인자와 반환값에 대한 타입을 명시할 수 있습니다. 이를 통해 코드를 읽는 사람이 함수의 의도를 더 쉽게 이해할 수 있습니다.

1. 기본 타입 힌트

def add(x: int, y: int) -> int:
    return x + y

result = add(3, 5)
print(result)  # 8

위 예제에서 xyint 타입이며, 함수는 int 타입을 반환한다고 명시하고 있습니다.

2. 다양한 타입 힌트

파이썬의 여러 기본 타입과 사용자 정의 타입에 대해 타입 힌트를 사용할 수 있습니다.

from typing import List, Dict, Tuple, Union, Optional

def process_list(items: List[int]) -> List[int]:
    return [item * 2 for item in items]

def get_user_info(name: str, age: int) -> Dict[str, Union[str, int]]:
    return {"name": name, "age": age}

def find_coordinates() -> Tuple[float, float]:
    return 37.7749, -122.4194

def optional_value(value: Optional[int] = None) -> int:
    return value if value is not None else 0

items = [1, 2, 3]
print(process_list(items))  # [2, 4, 6]
print(get_user_info("Alice", 30))  # {'name': 'Alice', 'age': 30}
print(find_coordinates())  # (37.7749, -122.4194)
print(optional_value())  # 0
print(optional_value(10))  # 10

실습 과제

  1. 주어진 리스트에서 짝수만 반환하는 함수 get_even_numbers를 작성하세요. 함수의 인자와 반환값에 대한 타입 힌트를 포함하세요.
  2. 두 점의 좌표를 입력받아 두 점 사이의 거리를 계산하는 함수 calculate_distance를 작성하세요. 함수의 인자와 반환값에 대한 타입 힌트를 포함하세요.
  3. 학생들의 이름과 점수를 담은 딕셔너리를 입력받아 최고 점수를 가진 학생의 이름을 반환하는 함수 get_top_student를 작성하세요. 함수의 인자와 반환값에 대한 타입 힌트를 포함하세요.

실습 과제 답안

1. get_even_numbers 함수

from typing import List

def get_even_numbers(numbers: List[int]) -> List[int]:
    return [num for num in numbers if num % 2 == 0]

# 테스트
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(get_even_numbers(numbers))  # [2, 4, 6, 8, 10]

2. calculate_distance 함수

from typing import Tuple
import math

def calculate_distance(point1: Tuple[float, float], point2: Tuple[float, float]) -> float:
    return math.sqrt((point2[0] - point1[0])**2 + (point2[1] - point1[1])**2)

# 테스트
point1 = (0.0, 0.0)
point2 = (3.0, 4.0)
print(calculate_distance(point1, point2))  # 5.0

3. get_top_student 함수

from typing import Dict

def get_top_student(students: Dict[str, int]) -> str:
    return max(students, key=students.get)

# 테스트
students = {"Alice": 85, "Bob": 92, "Charlie": 88}
print(get_top_student(students))  # Bob

이러한 타입 힌트를 사용하면 코드의 가독성이 높아지고, 정적 분석 도구나 IDE를 통해 타입 검사를 할 수 있어 코드의 품질을 높일 수 있습니다. 타입 힌트는 파이썬 3.5부터 도입되었으며, typing 모듈을 통해 다양한 타입을 지원합니다.