На этом шаге мы рассмотрим решение этой задачи.
Вы определили функцию, но хотели бы прикрепить дополнительную информацию к аргументам, чтобы другим людям было легче понять, что делает эта функция.
Аннотации аргументов могут быть полезны, чтобы помочь программистам разобраться в том, как нужно применять функцию. Например, рассмотрим такую аннотированную функцию:
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 нет объявлений типов, часто бывает сложно понять, что нужно передавать в функцию, когда вы просто читаете исходный код. Аннотации дают дополнительную информацию.
На следующем шаге мы рассмотрим возвращение функцией нескольких значений.