A warning is the alert message which doesn’t basically raise an exception and doesn’t terminate program.
There are warning categories as shown below:
| Class | Disposition |
|---|---|
| Warning | This is the base class of all warning category classes. It is a subclass of Exception. |
| UserWarning | The default category for warn(). |
| DeprecationWarning | Base category for warnings about deprecated features when those warnings are intended for other Python developers (ignored by default, unless triggered by code in __main__). |
| SyntaxWarning | Base category for warnings about dubious syntactic features. |
| RuntimeWarning | Base category for warnings about dubious runtime features. |
| FutureWarning | Base category for warnings about deprecated features when those warnings are intended for end users of applications that are written in Python. |
| PendingDeprecationWarning | Base category for warnings about features that will be deprecated in the future (ignored by default). |
| ImportWarning | Base category for warnings triggered during the process of importing a module (ignored by default). |
| UnicodeWarning | Base category for warnings related to Unicode. |
| UnicodeWarning | Base category for warnings related to Unicode. |
| BytesWarning | Base category for warnings related to bytes and bytearray. |
| ResourceWarning | Base category for warnings related to resource usage (ignored by default). |
warn() can manually occur a warning as shown below:
*Memos:
- The 1st argument is
message(Required-Type:str). - The 2nd argument is
category(Optional-Default:None-Type:Warning). *If it’sNone, UserWarning is set to it. - The 3rd argument is
stacklevel(Optional-Default:1-Type:int). *It decides which code a warning refers to. - The 4th argument is
source(Optional-Default:None-Type:Any). - There is
skip_file_prefixesargument(Optional-Default:None-Type:tupleofstr):
*Memos:-
skip_file_prefixes=must be used. - Manually setting
Noneto it gets error.
-
import warnings
warnings.warn(message="This is a warning.")
# UserWarning: This is a warning.
# warnings.warn(message="This is a warning.")
warnings.warn(message="This is a warning.",
category=None,
stacklevel=1,
source=None,
skip_file_prefixes=())
# UserWarning: This is a warning.
# warnings.warn(message="This is a warning.",
warnings.warn(message="This is a warning.",
category=Warning)
# Warning: This is a warning.
# warnings.warn(message="This is a warning.",
warnings.warn(message="This is a warning.",
category=DeprecationWarning)
# DeprecationWarning: This is a warning.
# warnings.warn(message="This is a warning.",
def test1():
warnings.warn(message="Warning 1",
stacklevel=-100)
warnings.warn(message="Warning 2",
stacklevel=0)
warnings.warn(message="Warning 3",
stacklevel=1)
warnings.warn(message="Warning 4",
stacklevel=2)
warnings.warn(message="Warning 5",
stacklevel=3)
warnings.warn(message="Warning 6",
stacklevel=4)
warnings.warn(message="Warning 7",
stacklevel=5)
warnings.warn(message="Warning 8",
stacklevel=100)
def test2():
test1()
def test3():
test2()
test3()
# UserWarning: Warning 1
# warnings.warn(message="Warning 1",
# UserWarning: Warning 2
# warnings.warn(message="Warning 2",
# UserWarning: Warning 3
# warnings.warn(message="Warning 3",
# UserWarning: Warning 4
# test1()
# UserWarning: Warning 5
# test2()
# UserWarning: Warning 6
# test3()
# UserWarning: Warning 7
# exec(code_obj, self.user_global_ns, self.user_ns)
# UserWarning: Warning 8
