NSU Programming Программирование на C++ и Python

python: дополнительные главы

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

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

def split_count(document: str, sep: str) -> (int):
    """ Подсчитывает количество частей, на которые разделитель sep разбивает
        строку document

    Аргументы:
        - document: str - строка
        - sep: str - разделитель

    Возвращает:
        - int
    """
    return len(document.split(sep))

Встроенная функция help для функции split_count вернет очень информативную подсказку:

help(split_count)
# Help on function split_count in module __main__:
#
# split_count(document: str, sep: str) -> int
#     Подсчитывает количество частей, на которые разделитель sep разбивает
#         строку document
#
#     Аргументы:
#         - document: str - строка
#         - sep: str - разделитель
#
#     Возвращает:
#         - int

Соответствие переданных значений аннотации типов никак не проверяется в ходе работы интерпретатора. Вся ответственность проверки лежит на разработчике (который может выполнить проверки типов) и пользователе (который должен соблюдать контракты функции).

Пакет typing содержит разнообразные инструменты для аннотации типов. Рекомендуем читателю самостоятельно изучить примеры его использования.