Python Glossary English

Python 3.13+warningsпонятие

warnings.deprecated

выдача предупреждений

Декоратор (с 3.13), помечающий функцию или класс устаревшими: при использовании выдаётся DeprecationWarning, а type checker подсвечивает вызов.

Синтаксис

@warnings.deprecated(message, /, *, category=DeprecationWarning, stacklevel=1)

Работает в двух мирах сразу: mypy и pyright видят пометку статически, а при выполнении каждый вызов функции, создание экземпляра или подкласса выдаёт DeprecationWarning с указанием на строку вызывающего. Это обычное предупреждение, и фильтры действуют на него как на любое: вне __main__ по умолчанию его не увидят. category=None оставляет только статическую пометку. Для версий до 3.13 тот же декоратор есть в typing_extensions; текст хранится в атрибуте __deprecated__.

Примеры

from warnings import deprecated, catch_warnings, simplefilter
@deprecated('используйте new_api()')
def old_api():
    return 42
with catch_warnings(record=True) as caught:
    simplefilter('always', DeprecationWarning)
    print(old_api())  # → 42
print(caught[0].category is DeprecationWarning)  # → True
print(old_api.__deprecated__)  # → используйте new_api()

См. также

Частые ошибки

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