- Как указывать типы параметров
- Какие типы используются в аннотациях
- Пример с параметрами по умолчанию
- Аннотации и проверка кода
В Python в функцию можно передать любые значения. Иногда это усложняет понимание кода: не всегда ясно, что именно ожидает функция и что она возвращает.
Чтобы сделать код понятнее, в Python есть аннотации типов. С их помощью можно явно указать, какие значения принимает функция и какой результат она возвращает. Эти подсказки полезны в редакторах кода: они показывают ожидаемые типы аргументов и помогают быстрее разобраться, как пользоваться функцией.
Как указывать типы параметров
Аннотация функции описывает два элемента:
- Типы параметров — указываются прямо в определении функции после имени каждого параметра через двоеточие.
- Тип возвращаемого результата — указывается после списка параметров с помощью стрелки `
>
.
Разберем на примере функции, которая вычисляет сумму двух переданных значений:
def add(a: int, b: int) -> int:
return a + b
print(add(2, 3)) # => 5
Теперь редактор кода будет подсказывать, что функция add
принимает два числа и возвращает число. Если попытаться передать строку, редактор подсветит это как проблему и предупредит.
Какие типы используются в аннотациях
На этом этапе достаточно знать аннотации для простых, примитивных типов данных:
int
— целые числаfloat
— числа с плавающей точкойstr
— строкиbool
— логические значения (True или False)
def describe(name: str, age: int, height: float) -> str:
return f"{name}, {age} лет, рост {height}"
print(describe("Anna", 25, 1.70))
# => Anna, 25 лет, рост 1.7
Пример с параметрами по умолчанию
Аннотации работают одинаково как для обязательных параметров, так и для тех, у которых есть значение по умолчанию. Сначала указывается тип, потом через =
— стандартное значение.
def greet(name: str, greeting: str = "Hello") -> str:
return f"{greeting}, {name}"
print(greet("Anna")) # => Hello, Anna
print(greet("Kirill", "Hi")) # => Hi, Kirill
В этом примере name
— обязательный параметр, а greeting
имеет значение по умолчанию. Аннотации показывают типы обоих параметров и возвращаемого результата.
Аннотации и проверка кода
Хотя сам Python не проверяет аннотации во время выполнения программы, есть отдельные инструменты, которые умеют это делать. Такой подход называют статической проверкой кода.
"Статическая" значит, что проверка происходит ещё до запуска программы. Инструмент читает исходный код и сверяет, соответствуют ли переданные значения указанным типам.
Например, если функция принимает строку, а вы передадите число, то при статической проверке это будет показано как ошибка.
Особенно удобно, когда такие ошибки подсвечивает редактор прямо во время написания кода. Это позволяет сразу увидеть проблему и исправить её, не дожидаясь запуска программы. Благодаря этому в работающем коде становится меньше неожиданных ошибок — многие из них отлавливаются заранее.
Аннотации типов не являются обязательными. Функции можно писать и без них — Python всё равно будет работать. Но когда аннотации есть, код становится понятнее для людей и удобнее для редакторов. Нужно ли аннотировать функции в своем коде? Да, это считается хорошей практикой.