Typer в Python - это
Published 7 августа 2025 г. 13:00 by max_summer
В Python typing
— это стандартный модуль, который предоставляет поддержку для аннотаций типов (type hints). Он позволяет указывать типы переменных, аргументов функций и возвращаемых значений, что улучшает читаемость кода и помогает инструментам статического анализа (например, mypy
, Pyright
) находить потенциальные ошибки.
Основные возможности модуля typing
:
-
Базовые аннотации типов:
python def greet(name: str) -> str: return f"Hello, {name}"
-
Сложные типы:
-
List
,Dict
,Set
,Tuple
и другие коллекции: ```python from typing import List, Dictdef process_items(items: List[int]) -> Dict[str, int]: return {"count": len(items)} ```
-
Обобщённые типы (Generics): ```python from typing import TypeVar, Generic
T = TypeVar('T')
class Box(Generic[T]): def init(self, item: T): self.item = item ```
- Опциональные и объединённые типы:
-
Optional
(аналогUnion[T, None]
): ```python from typing import Optionaldef find_user(user_id: int) -> Optional[str]: return "Alice" if user_id == 1 else None
- `Union` (объединение типов):
python from typing import Uniondef parse_value(value: Union[int, str]) -> None: print(value) ```
-
Типы для функций:
-
Callable
(аннотация функций): ```python from typing import Callabledef apply_func(func: Callable[[int, int], float], x: int, y: int) -> float: return func(x, y) ```
-
Типы для атрибутов классов:
-
ClassVar
(переменные класса): ```python from typing import ClassVarclass MyClass: class_var: ClassVar[int] = 10 ```
-
Типы для асинхронных функций:
-
Awaitable
,AsyncIterable
,AsyncGenerator
: ```python from typing import Awaitableasync def fetch_data() -> Awaitable[str]: return "Data" ```
-
Типы для аннотаций в рантайме (Python 3.10+):
-
TypeAlias
(псевдонимы типов): ```python from typing import TypeAliasUserId: TypeAlias = int ```
Пример использования:
```python from typing import List, Dict, Optional, Union
def process_data( data: List[Union[int, str]], config: Optional[Dict[str, int]] = None ) -> Dict[str, int]: result = {} for item in data: if isinstance(item, int): result[str(item)] = item * 2 return result ```
Важно:
- Аннотации типов не влияют на выполнение кода в Python (они игнорируются интерпретатором).
- Для проверки типов используются внешние инструменты (
mypy
,Pyright
,pytype
). - В Python 3.9+ многие типы из
typing
можно использовать напрямую (например,list[int]
вместоList[int]
).
Если вам нужна более глубокая информация по конкретному аспекту typing
, уточните вопрос!
Similar posts
There are no similar posts yet.
0 comments
There are no comments