Шаг 119.
Python: сборник рецептов.
Функции. Прикрепление информационных метаданных к аргументам функций

    На этом шаге мы рассмотрим решение этой задачи.

Задача

    Вы определили функцию, но хотели бы прикрепить дополнительную информацию к аргументам, чтобы другим людям было легче понять, что делает эта функция.

Решение

    Аннотации аргументов могут быть полезны, чтобы помочь программистам разобраться в том, как нужно применять функцию. Например, рассмотрим такую аннотированную функцию:

def add(x:int, y:int) -> int: 
    return x + y

    Интерпретатор Python не прикрепляет никакого семантического смысла к аннотациям. Это не проверки типов, они вообще никак не влияют на поведение Python. Однако они могут помогать другим людям читать исходный код и понимать, что вы имели в виду. А вот сторонние инструменты и фреймворки могут прикреплять к аннотациям семантический смысл. Также они появляются в документации:

>>> help(add)
Help on function add in module  __main__:

add(x: int, y: int) -> int 

>>>

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

Обсуждение

    Аннотации функции хранятся в атрибуте функции __annotations__. Например:

>>> add.__annotations__
{'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}
>>> 

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

    На следующем шаге мы рассмотрим возвращение функцией нескольких значений.




Предыдущий шаг Содержание Следующий шаг