• burger-icon

    Шаг 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)
    

     

    Для решения задачи, Зарегистрируйтесь или Войдите на сайт.