Home
Python
assert, O Option
Updated May 25, 2023
Dot Net Perls
Assert. This statement causes an AssertionError when an expression is false. We pass an expression (or value) as the first argument. Python stops and signals the assert call.
Error
With this statement, we can ensure a program's state is correct. And by providing the "O" option on the command line, we can optimize out all assert calls.
Tip Assert() only has an effect when __debug__ is true. We can disable __debug__ with a command-line parameter.
An assert example. This example program has an assert statement. It causes an AssertionError unless the two values add up to 110.
So If the two values add up to 110, an assertion occurs. Otherwise nothing happens.
Detail The first command line uses the "O" option. This means the assertion is optimized out of the program.
And The second command line uses no special options, so the assert is left in the program and triggered.
value = 10 value2 = 100 # Assert if this expression is not true. assert(value + value2 != 110) print("DONE")
C:\pypy3-2.4.0-win32\pypy.exe -O C:\programs\file.py
DONE
C:\pypy3-2.4.0-win32\pypy.exe C:\programs\file.py
Traceback (most recent call last): File "C:\programs\file.py", line 8, in <module> assert(value + value2 != 110) AssertionError
Options. When running PyPy or Python, try providing the "-h" option. This will show you help. Then use "-O" to enable optimization (which removes asserts).
-O : skip assert statements
Some notes. Python is not known for its extreme performance. If your code is critical and cannot bear the burden of assert statements, a faster language might be a good idea.
A review. Assert statements can be used instead of print statements for debugging. With assert() we can then completely remove all this logic. This helps if we know the program is correct.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
No updates found for this page.
Home
Changes
© 2007-2025 Sam Allen