Typer в Python - это

Tags:

Published 7 августа 2025 г. 13:00 by max_summer

В Python typing — это стандартный модуль, который предоставляет поддержку для аннотаций типов (type hints). Он позволяет указывать типы переменных, аргументов функций и возвращаемых значений, что улучшает читаемость кода и помогает инструментам статического анализа (например, mypy, Pyright) находить потенциальные ошибки.

Основные возможности модуля typing:

  1. Базовые аннотации типов: python def greet(name: str) -> str: return f"Hello, {name}"

  2. Сложные типы:

  3. List, Dict, Set, Tuple и другие коллекции: ```python from typing import List, Dict

    def process_items(items: List[int]) -> Dict[str, int]: return {"count": len(items)} ```

  4. Обобщённые типы (Generics): ```python from typing import TypeVar, Generic

T = TypeVar('T')

class Box(Generic[T]): def init(self, item: T): self.item = item ```

  1. Опциональные и объединённые типы:
  2. Optional (аналог Union[T, None]): ```python from typing import Optional

    def find_user(user_id: int) -> Optional[str]: return "Alice" if user_id == 1 else None - `Union` (объединение типов):python from typing import Union

    def parse_value(value: Union[int, str]) -> None: print(value) ```

  3. Типы для функций:

  4. Callable (аннотация функций): ```python from typing import Callable

    def apply_func(func: Callable[[int, int], float], x: int, y: int) -> float: return func(x, y) ```

  5. Типы для атрибутов классов:

  6. ClassVar (переменные класса): ```python from typing import ClassVar

    class MyClass: class_var: ClassVar[int] = 10 ```

  7. Типы для асинхронных функций:

  8. Awaitable, AsyncIterable, AsyncGenerator: ```python from typing import Awaitable

    async def fetch_data() -> Awaitable[str]: return "Data" ```

  9. Типы для аннотаций в рантайме (Python 3.10+):

  10. TypeAlias (псевдонимы типов): ```python from typing import TypeAlias

    UserId: 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 ```

Важно:

Если вам нужна более глубокая информация по конкретному аспекту typing, уточните вопрос!

Share this post

Similar posts

There are no similar posts yet.

0 comments

There are no comments

Add a new comment