Какие знаешь особенности типизации в Python

Python Junior Без компании
Какие знаешь особенности типизации в Python
Ответы
Python использует динамическую типизацию — типы переменных определяются во время выполнения, а не компиляции. Однако с Python 3.5+ появилась поддержка аннотаций типов (type hints) через модуль `typing`, что позволяет статически проверять типы с помощью инструментов вроде `mypy`. **Ключевые особенности:** - **Утиная типизация** — объект считается подходящим, если реализует нужные методы/атрибуты, а не наследует от конкретного класса. - **Аннотации типов** (необязательные, но полезные):``` def greet(name: str) -> str: return f"Hello, {name}" ``` - **Union и Optional**:``` from typing import Union, Optional def divide(a: float, b: float) -> Union[float, None]: return a / b if b != 0 else None ``` - **Generics** (обобщенные типы):``` from typing import List, Dict def process(items: List[int]) -> Dict[str, int]: return {"count": len(items)} ``` - **Structural subtyping** (протоколы) — типы определяются структурой, а не явным наследованием:``` from typing import Protocol class Flyer(Protocol): def fly(self) -> str: ... ``` - **`Any`** — отключает проверку типов, а **`NoReturn`** указывает, что функция никогда не возвращает управление. Типизация в Python остается динамической, но аннотации помогают улучшить читаемость и надежность кода.