Аннотации типов
Подсказывай типы аргументов и возвратов — 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 — это разные контракты.