Python Glossary English

все Python 3warningsфункция

warnings.warn()

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

Выдаёт предупреждение — сообщение о проблеме, которое не прерывает программу; показывать ли его, решают фильтры. Категория по умолчанию — UserWarning.

Синтаксис

warnings.warn(message, category=None, stacklevel=1, source=None, *, skip_file_prefixes=())

В отличие от raise, warn не останавливает выполнение: функция работает дальше, а сообщение уходит в stderr, и то лишь если фильтры его пропустят; одинаковое предупреждение из одной строки по умолчанию выводится один раз, хоть в цикле. В отличие от logging, адресат — не тот, кто следит за работающей программой, а программист, который вызывает ваш код: «функция устарела», «аргумент станет обязательным». Фильтр 'error' (ключ -W error) превращает предупреждение в исключение. stacklevel=2 указывает на строку вызывающего, а не на сам warn.

Примеры

import warnings
def area(r, unit=None):
    if unit is None:
        warnings.warn('укажите unit явно', FutureWarning, stacklevel=2)
    return 3 * r * r
with warnings.catch_warnings(record=True) as caught:
    warnings.simplefilter('always')
    print(area(2))  # → 12
print(caught[0].category.__name__, caught[0].lineno)  # → FutureWarning 8
import warnings
with warnings.catch_warnings(record=True) as caught:
    warnings.simplefilter('default', DeprecationWarning)
    for _ in range(3):
        warnings.warn('старый вызов', DeprecationWarning)
print(len(caught))  # → 1

См. также

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

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