Сообщить об ошибке.

Функция warn() модуля warnings в Python

Выдать предупреждение warning

Синтаксис:

import warnings

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

Параметры:

Возвращаемое значение:

  • выдает предупреждение.

Описание:

Функция warn() модуля warnings выдает предупреждение или вызывает исключение, согласно настройкам фильтра предупреждений.

Аргумент category, если он указан, должен быть классом категории предупреждения. По умолчанию используется UserWarning.

В качестве альтернативы, message может быть экземпляром Warning, в этом случае категория аргумент category будет игнорироваться и будет использоваться message.__class__. В этом случае текст сообщения будет str(message).

Функция warnings.warn() создает исключение, если конкретное выданное предупреждение заменяется ошибкой с помощью фильтра предупреждений.

Аргумент stacklevel может использоваться функциями-обертками, написанными на Python, например:

def deprecation(message):
    warnings.warn(message, DeprecationWarning, stacklevel=2)

Это заставляет предупреждение ссылаться на функцию, которая вызывает deprecation(), а не к самому функцию deprecation(), так как последняя будет игнорировать цель предупреждающего сообщения.

Источник source, если он указан, является уничтоженным объектом, который выдал исключение ResourceWarning.

Примеры:

import warnings

# определим класс в которым будем предупреждать
# что метод 'old_method' считается устаревшим
class MyClass:
    def __init__(self):
      self.text = "Пример WarnExample"

    def old_method(self):
        # Выводим предупреждение, что метод устаревший
        warnings.warn(
            "This is deprecated, use new_method() instead",
            DeprecationWarning
        )
        print ('Это старый.', self.text)
        
    def new_method(self):
       print ('Это новый метод.', self.text)

# установим фильтр предупреждений в 'default'
>>> warnings.simplefilter('default')
>>> example = MyClass()
>>> example.old_method()
# test.py:11: DeprecationWarning: This is deprecated, use new_method() instead
#  DeprecationWarning
# Это старый. Пример WarnExample

# установим фильтр предупреждений в 'error'
>>> warnings.simplefilter('error')
>>> example.old_method()
# Traceback (most recent call last):
#   File "test.py", line 24, in <module>
#     e.old_method()
#   File "test.py", line 11, in old_method
#     DeprecationWarning
# DeprecationWarning: This is deprecated, use new_method() instead