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
31
32
33
34
| from typing import Dict, Tuple, Union, Callable
# 5. 딕셔너리와 복합 타입
def process_user_data(
user_info: Dict[str, Union[str, int]]
) -> Tuple[str, int]:
# Dict[str, Union[str, int]]는
# - 키는 문자열이고
# - 값은 문자열 또는 정수인 딕셔너리를 의미
# Tuple[str, int]는 문자열과 정수로 구성된 튜플을 반환한다는 의미
name = user_info.get("name", "")
age = user_info.get("age", 0)
return name, age
# 6. 함수 타입 힌트
def apply_operation(
func: Callable[[int, int], int],
x: int,
y: int
) -> int:
# Callable[[int, int], int]는
# - 두 개의 정수를 입력받고
# - 정수를 반환하는 함수를 의미
return func(x, y)
# 7. 제네릭 타입
from typing import TypeVar, Sequence
T = TypeVar('T') # 제네릭 타입 변수 정의
def first_element(sequence: Sequence[T]) -> Optional[T]:
# Sequence[T]는 임의의 타입 T로 이루어진 시퀀스를 의미
# Optional[T]는 T 타입 또는 None을 반환할 수 있음을 의미
return sequence[0] if sequence else None
|