Найти в Дзене
Дойти до IT

Python - Аннотации типов

Аннотации помогают определять типы параметров и возвращаемых значений функций. Хотя их использование не является обязательным, оно значительно улучшает читаемость кода и облегчает его дальнейшее сопровождение и развитие как для вас, так и для других разработчиков, работающих с вашим проектом. Давайте рассмотрим пример функции, которая принимает два числа и возвращает их сумму: def add(a, b):
____return a + b Изначально, без дополнительной информации, непонятно, какие данные ожидаются в качестве аргументов a и b. Эта функция могла бы использоваться для сложения чисел, объединения строк или даже добавления элементов списков. Чтобы сделать назначение параметров более ясным, добавим аннотации типов: def add(a: int, b: int):
____return a + b Теперь становится очевидно, что функция ожидает целые числа (`int`) в качестве входных параметров и возвращает целое число. Аннотации делают код более понятным и самодокументируемым, что особенно полезно при чтении и поддержке кода другими разработчикам
Оглавление

Аннотации помогают определять типы параметров и возвращаемых значений функций. Хотя их использование не является обязательным, оно значительно улучшает читаемость кода и облегчает его дальнейшее сопровождение и развитие как для вас, так и для других разработчиков, работающих с вашим проектом.

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

Давайте рассмотрим пример функции, которая принимает два числа и возвращает их сумму:

def add(a, b):
____return a + b

Изначально, без дополнительной информации, непонятно, какие данные ожидаются в качестве аргументов a и b. Эта функция могла бы использоваться для сложения чисел, объединения строк или даже добавления элементов списков.

Чтобы сделать назначение параметров более ясным, добавим аннотации типов:

def add(a: int, b: int):
____return a + b

Теперь становится очевидно, что функция ожидает целые числа (`int`) в качестве входных параметров и возвращает целое число. Аннотации делают код более понятным и самодокументируемым, что особенно полезно при чтении и поддержке кода другими разработчиками.

Так же и текстовые редакторы с IDE будут подсказывать нам, что ожидает функция:

-2

Аннотация возвращаемого значения

Возвращаясь к нашему примеру, предположим, что функция должна принимать два целых числа, но возвращать результат в виде строки. Для этого используем аннотацию типа возвращаемого значения:

def add(a: int, b: int) -> str:
____return str(a + b)

Здесь, с помощью стрелки ->, мы указали, что функция будет возвращать значение типа str, то есть строку. Текстовые редакторы и интегрированные среды разработки (IDE), поддерживающие статический анализатор кода, смогут автоматически определить, что результатом выполнения функции будет строка, что помогает избежать ошибок и повышает удобство работы с кодом.

-3

Даже если вы ошибетесь в аннотации возвращаемого значения, интерпретатор Python не выдаст ошибку — выполнение программы продолжится. Однако такая ошибка может существенно усложнить понимание кода для вас самих и ваших коллег в будущем. Неправильные аннотации могут привести к путанице и трудностям при поддержке и развитии проекта. Поэтому важно внимательно проверять соответствие реальных возвращаемых значений указанным аннотациям.

Модуль typing

Для работы с более сложными типами данных в Python существует модуль typing, который предлагает разнообразные конструкции для аннотирования типов. Этот модуль позволяет лучше структурировать и документировать код, делая его более понятным и удобным для поддержки.

Общие типы

– List[int] — список целых чисел.

– Dict[str, Any] — словарь с ключами-строками и значениями любого типа.

– Optional[str] — значение может быть строкой или None.

– Union[int, str] — значение может быть либо целым числом, либо строкой.

Пример использования:

from typing import List, Dict, Optional

def func(data: List[Dict[str, Optional[int]]]) -> None:
____for element in data:
________print(element)