все Python 3warningsфункция
warnings.simplefilter()
фильтры
Добавляет правило фильтра по категории предупреждения: 'error', 'ignore', 'always', 'default', 'module' или 'once' — без условий по тексту.
Синтаксис
warnings.simplefilter(action, category=Warning, lineno=0, append=False)
Именно фильтры решают, увидит ли пользователь предупреждение: по умолчанию Python прячет DeprecationWarning вне __main__, PendingDeprecationWarning, ImportWarning и ResourceWarning, а остальные показывает один раз на место в коде. simplefilter('error') превращает предупреждения в исключения — так тесты ловят устаревшие вызовы; 'ignore' глушит. Снаружи, без правки кода, то же задаёт ключ python -W error::DeprecationWarning или переменная PYTHONWARNINGS; правило из кода встаёт в начало списка и перекрывает их. Изменение глобально — временное делайте в catch_warnings().
Примеры
import warnings
warnings.simplefilter('error', DeprecationWarning)
try:
warnings.warn('функция устарела', DeprecationWarning)
except DeprecationWarning as e:
print('исключение:', e) # → исключение: функция устарела
import warnings
with warnings.catch_warnings(record=True) as caught:
warnings.simplefilter('once')
for _ in range(3):
warnings.warn('медленный путь')
print(len(caught)) # → 1
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности