Python Glossary English

Python 3.0+Функциифункция

Аннотации типов (type hints)

аннотации

Подсказки типов для параметров и возвращаемых значений. Не влияют на выполнение, но помогают IDE и mypy.

Синтаксис

def f(x: int) -> str: ...

Аннотации — это просто метаданные: Python хранит их в __annotations__ и сам никогда не проверяет, поэтому передача строки туда, где объявлен int, не вызовет ошибки — её поймает только mypy. На тех же метаданных построены dataclasses и pydantic, которые читают аннотации во время выполнения. С Python 3.14 аннотации вычисляются лениво, поэтому на ещё не определённый класс можно сослаться прямо по имени; в более старых версиях его имя берут в кавычки.

Примеры

def greet(name: str) -> str:
    return f'Hello, {name}'
print(greet('Alice'))  # → Hello, Alice
def add(a: int, b: int) -> int:
    return a + b
print(add(2, 3))  # → 5
from typing import Optional
def find(lst: list, val: int) -> Optional[int]:
    try:
        return lst.index(val)
    except ValueError:
        return None
print(find([1,2,3], 2))  # → 1
from typing import Union
def double(x: Union[int, float]) -> Union[int, float]:
    return x * 2
print(double(3.5))  # → 7.0
from typing import List, Dict
def total(prices: List[float]) -> float:
    return sum(prices)
print(total([1.5, 2.5, 3.0]))  # → 7.0
# Python 3.10+ синтаксис
def clamp(x: int | float, lo: int | float, hi: int | float) -> int | float:
    return max(lo, min(x, hi))
print(clamp(5, 0, 3))  # → 3
# Variable annotations
count: int = 0
name: str
# Python 3.9+
def get_items() -> list[int]:
    return [1, 2, 3]

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности