What does assert
mean? How is it used?
Advertisement
Answer
The assert
statement exists in almost every programming language. It has two main uses:
It helps detect problems early in your program, where the cause is clear, rather than later when some other operation fails. A type error in Python, for example, can go through several layers of code before actually raising an
Exception
if not caught early on.It works as documentation for other developers reading the code, who see the
assert
and can confidently say that its condition holds from now on.
When you do…
assert condition
… you’re telling the program to test that condition, and immediately trigger an error if the condition is false.
In Python, it’s roughly equivalent to this:
if not condition: raise AssertionError()
Try it in the Python shell:
>>> assert True # nothing happens >>> assert False Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError
Assertions can include an optional message, and you can disable them when running the interpreter.
To print a message if the assertion fails:
assert False, "Oh no! This assertion failed!"
Do not use parenthesis to call assert
like a function. It is a statement. If you do assert(condition, message)
you’ll be running the assert
with a (condition, message)
tuple as first parameter.
As for disabling them, when running python
in optimized mode, where __debug__
is False
, assert statements will be ignored. Just pass the -O
flag:
python -O script.py
See here for the relevant documentation.