
Шаг 7. Аннотации типов
Баллов за прохождение: 1
Аннотации типов
Аннотации позволяют указывать тип параметра и возвращаемого значения. Наличие аннотаций в коде необязательно, но очень желательно: аннотации улучшаю читабельность кода и упрощают дальнейшую его поддержку и расширение как вами, так и другими разработчиками, работающими над вашим кодом.
Аннотация параметров
Рассмотрим на примере. Объявим функцию, которая принимает два числа и вовзвращает их сумму:
def add(a, b):
return a + b
После того как я рассказал, что делает эта функция, стало понятно, что она работает с числами. Но если бы не моя подсказка, было бы сложно понять, что функция принимает в параметрах. Это могла бы быть функция конкатенации строк, к примеру. Или присоединение одного списка к другому.
Перепишем функцию используя аннотации:
def add(a: int, b: int):
return a + b
Теперь нам сразу без подсказок понятно, что именно нужно передавать в параметры этой функции: она ожидает целые числа.
Так же и текстовые редакторы с IDE будут подсказывать нам, что ожидает функция:
Аннотация возвращаемого значения
Вернемся к примеру из предыдущего раздела урока, теперь мы знаем что нужно передавать функции и мы знаем, что функция должна вернуть сумму двух целых чисел. Но если функция должна принимать целое число, а возвращать строку?
В этом нам поможет аннотация возвращаемого значения:
def add(a: int, b: int) -> str:
return str(a + b)
Используя стрелочку -> и указывая после нее тип данных мы говорим, что должна вернуть данная функция, текстовые редакторы и IDE с поддержкой статического анализатора кода подскажут нам, что тепенрь функция вернет строку:
Если вдруг вы неверно указали аннотацию возвращаемого значения, для интерпретатора ничего критичного не произойдет. Но для вас и ваших будущих коллег при работе могут возникнуть большие трудности с пониманием кода и, как следствие, его дальнейшей поддержкой и расширением. Внимательно проверяйте, что возвращает каждая функция и правильно указывайте аннотацию возвращаемого значения!
Модуль 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)