Python Schoolby trefilov
Шаг 1 из 4+100 XP

Аннотации типов

Подсказывай типы аргументов и возвратов — IDE и проверяющие будут довольны.

Аннотации типов

Что это

Type hints — необязательные подсказки о том, какие типы принимают и возвращают функции, какие типы у переменных. Они не проверяются в рантайме: Python их игнорирует. Их читают IDE (PyCharm, VS Code), линтеры (mypy, Pyright) и люди, которые потом будут править код.

Как читается

from typing import Optional

def divide(a: float, b: float) -> Optional[float]:
if b == 0:
return None
return a / b

- a: float — аргумент a ожидает float.
- -> Optional[float] — функция вернёт либо float, либо None.
- В Python 3.10+ короче: float | None вместо Optional[float].

Пример

from typing import Optional

def find_user(uid: int) -> Optional[dict]:
db = {1: {"name": "Anna"}, 2: {"name": "Bob"}}
return db.get(uid) # dict либо None

print(find_user(1)) # {'name': 'Anna'}
print(find_user(99)) # None

Когда использовать / подводные камни

👍 Ставь хинты в публичные функции и публичные методы классов — это половина документации.
👎 Не думай, что x: int запретит передать строку. Запретит mypy в CI, не Python. И не путай Optional[int] (значение или None) с просто int — это разные контракты.