What is assert in python
In simpler terms, we can say that assertion is the boolean expression that checks if the statement is True or False. If the statement is true then it does nothing and continues the execution but if the statement is False then it stops the execution of the program and throws an error. Let us look at the flowchart of the assertion.
Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics. Skip to content. Python Exception Handling Using try, except and finally statement. Python Keywords and Identifiers. Python Assert Statement In this article we will learn about assertion in Python using assert. What is Assertion? It is also a debugging tool as it halts the program as soon as an error occurs and displays it.
We can be clear by looking at the flowchart below: Python assert Statement Python has built-in assert statement to use assertion condition in the program. If the condition is not satisfied assert stops the program and gives AssertionError along with the error message.
Table of Contents What is Assertion? Python assert Statement Key Points to Remember. Share on:. Did you find this article helpful? Sorry about that. They always expect a True condition. You're telling the program to test that condition and immediately trigger an error if it is false. In Python, assert expression , is equivalent to:. There are some caveats to seen before using them mainly for those who deem to toggles between the assert and if statements.
The aim to use assert is on occasions when the program verifies a condition and return a value that should stop the program immediately instead of taking some alternative way to bypass the error:. As you may have noticed, the assert statement uses two conditions. Hence, do not use parentheses to englobe them as one for obvious advice.
If you do such as:. You will be running the assert with a condition, message which represents a tuple as the first parameter, and this happens cause non-empty tuple in Python is always True. However, you can do separately without problem:. If you are wondering regarding when use assert statement. Take an example used in real life:. Therefore, using the assert statement to validate a sort of expected data is extremely dangerous, implying even to some security issues.
Then, if you need to validate some permission I recommend you raise AuthError instead. As a preconditional effective, an assert is commonly used by programmers on libraries or modules that do not have a user interact directly.
Simple as that. As summarized concisely on the C2 Wiki :. An assertion is a boolean expression at a specific point in a program which will be true unless there is a bug in the program. You can use an assert statement to document your understanding of the code at a particular program point. For example, you can document assumptions or guarantees about inputs preconditions , program state invariants , or outputs postconditions.
Should your assertion ever fail, this is an alert for you or your successor that your understanding of the program was wrong when you wrote it, and that it likely contains a bug. For more information, John Regehr has a wonderful blog post on the Use of Assertions , which applies to the Python assert statement as well. In Pycharm, if you use assert along with isinstance to declare an object's type, it will let you access the methods and attributes of the parent object while you are coding, it will auto-complete automatically.
Python assert is basically a debugging aid which test condition for internal self-check of your code. Assert makes debugging really easy when your code gets into impossible edge cases. Assert check those impossible cases. So, in case the above condition is violated assert raises an Assertion Error, which helps the developer to identify that something impossible had happened. As written in other answers, assert statements are used to check the state of the program at a given point. Check also the doc for first hand information.
I will focus on your question: what is the use of assert? More precisely, when and when not should one use assert? The assert statements are useful to debug a program, but discouraged to check user input. I use the following rule of thumb: keep assertions to detect a this should not happen situation. A user input may be incorrect, e. If the diameter of a circle is not twice as large as its radius, you are in a this should not happen case.
The most interesting, in my mind, use of assert is inspired by the programming by contract as described by B. You can't fully emulate programming by contract using the assert statement, but it's interesting to keep the intent.
Here's an example. The specification you are given is: "if the list is not empty, return the first item of a list". Look at the following implementations:. Yes, this can be written as return xs[0] if xs else None , but that's not the point. Hence, both implementations are I hope correct. They differ when you try to take the head item of an empty list:. Again, both implementations are correct, because no one should pass an empty list to these functions we are out of the specification.
That's an incorrect call, but if you do such a call, anything can happen. One function raises an exception, the other returns a special value. The most important is: we can't rely on this behavior. If xs is empty, this will work:.
To avoid some surprises, I would like to know when I'm passing some unexpected argument to a function. In other words: I would like to know when the observable behavior is not reliable, because it depends on the implementation, not on the specification.
Of course, I can read the specification, but programmers do not always read carefully the docs. Imagine if I had a way to insert the specification into the code to get the following effect: when I violate the specification, e. That would be a great help to write a correct i.
Only positive numbers are allowed. Learn Python using coding questions with answers. Want to check how much you know Python? Start Python Skill Test. Related Articles. How to count the occurrences of a list item?