JET School

Что такое Аннотация?

Аннотация в Python — это механизм, позволяющий указывать дополнительную информацию о типах переменных, аргументов функций и возвращаемых значений. Аннотации появились в языке начиная с Python 3.0 (PEP 3107), а с версии 3.5 были расширены системой подсказок типов (type hints) согласно PEP 484.

Python является динамически типизированным языком, что означает: переменные не требуют явного указания типа, и тип определяется во время выполнения. Однако аннотации позволяют разработчику указать ожидаемые типы явно. Это улучшает читаемость кода, помогает в командной разработке и открывает возможности для статического анализа с использованием инструментов вроде mypy.

Пример базовой аннотации

def приветствие(имя: str) -> str:

return f"Привет, {имя}!"

  • имя: str — говорит, что функция ожидает строку.
  • -> str — указывает, что функция возвращает строку.

Аннотация переменных


возраст: int = 25

число_пи: float = 3.14

активен: bool = True

Эти аннотации не влияют на выполнение кода, но позволяют редакторам кода и анализаторам типов предупреждать о возможных ошибках.

Преимущества аннотаций

  1. Улучшение понятности и читаемости кода.
  2. Поддержка подсказок и автозаполнения в IDE.
  3. Возможность использовать анализаторы типов (mypy, pyright и т.д.).
  4. Облегчение работы в командах и при больших проектах.
  5. Упрощение процесса рефакторинга.

Расширенные типы с использованием typing

from typing import List, Dict, Optional


def получить_студентов(класс: Dict[str, List[str]]) -> Optional[List[str]]:

return класс.get("студенты")

  • Dict[str, List[str]] — словарь, где ключи — строки, а значения — списки строк.
  • Optional[List[str]] — может возвращать List[str] или None.

Аннотации в классах

class Круг:

def __init__(self, радиус: float) -> None:

self.радиус: float = радиус


def площадь(self) -> float:

return 3.14159 * self.радиус ** 2

Просмотр аннотаций во время выполнения

Аннотации доступны через специальный атрибут __annotations__:

def сумма(a: int, b: int) -> int:

return a + b


print(сумма.__annotations__)

# Вывод: {'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}

Использование встроенных типов (Python 3.9+)

Начиная с Python 3.9, для аннотаций можно использовать стандартные типы, без модуля typing:

def сумма_чисел(числа: list[int]) -> int:

return sum(числа)

Вывод

  • Аннотации позволяют указывать ожидаемые типы данных в коде Python.
  • Они не обязательны и не влияют на выполнение кода, но помогают при разработке, особенно в больших и сложных проектах.
  • Благодаря аннотациям код становится более стабильным, понятным и сопровождаемым.

Присоединяйтесь к нашим курсам для углубленного изучения области ИТ. Отправьте запрос для получения подробной информации!