top

Search

Python Tutorial

.

UpGrad

Python Tutorial

Assert Keyword in Python

Introduction

Python's assert keyword is an effective testing and debugging utility. It enables programmers to validate assumptions and verify particular conditions within code. When an assertion is made, Python evaluates the expression following the "assert" keyword. This article provides an in-depth understanding of the assert keyword in Python using examples and code illustrations.

What is Assert?

  • The assert keyword in Python is a tool that evaluates the validity of a statement. In simpler terms, it is a boolean expression. 

  • If the assert keyword returns true, the program continues for execution; however, if the assert keyword returns false (python assert false), the program stops. 

Assert keyword in Python example 1:

x = “good”

assert x == “good”
#the statement is true, and therefore nothing happens

assert x == “bad”
#the statement is false and shows an assertion error.

Why Use Assert in Python?

The assert keyword in Python is used for several reasons. Additionally, the Python assert in production code serves many benefits. The usefulness of the assert keyword in Python can be understood by the example below:

Example 2:

def divide(a, b):
    assert b != 0, "Error: Division by zero!"
    return a / b

numerator = 10
denominator = 0

result = divide(numerator, denominator)
print(result)

Explanation: The assert statement checks whether the denominator is not equal to zero (b !=0). The assert statement returns False since the denominator is set to 0, and the code shows an assertion error with the message “Error: Division by zero!"

Where is Assertion in Python Used?

The assert Python 3 is mainly used for debugging codes. You can use it when you want to ensure that the conditions embedded in your code are satisfied. 

Example 3:

x = “red”

assert x == “pink”, “x should be ‘red’”

In the above example, the assert function checks whether the variable x has an input string “pink.” Since x has already been defined as “red,” the assert returns False, and the code displays the following assertion error, “x should be ‘red.’”

In a tedious code, the assert statement is important to avoid the mistake of inserting unspecified conditions in your code. This ensures that your code runs error-free.

Assert Keyword in Python

In Python, the assert keyword is easy to understand due to its simple execution. The code below depicts the assert keyword in a Python example.

Example 4: 

def check_even_number(num):
    assert num % 2 == 0, "Number is not even!"
    print("Number is even.")

Trial 1: check_even_number(4) 

Output: The number is even

Trial 2: check_even_number(7) 

Output: The number is not even! 

Explanation:  

  • The Assert statement has the condition num%2==0. The assert checks if the num value is divisible by 2.

  • When 7 is input as the num value, the assert statement returns false and displays the assertion error in Python.

Flowchart of Python Assert Statement

It is easy to comprehend the working of this statement from the flowchart given below:

  • First, the previous code is written. (x=”good”) (refer to example 1)

  • Then, the assertion condition is written. (assert x==”bad”, “x should be ‘good’”)

  • If the assertion condition is true, the program executes.

  • If it is false, the assertion stops the program and displays Python assert with message.

What Does the Assertion Error Do to Our Code?

When an "AssertionError" is raised in Python, the normal implementation of the program is interrupted, and its progress is halted. This error indicates that an assertion statement failed, meaning the assertion's condition was evaluated as False.

Python Assert Keyword Syntax

The assert keyword in Python follows a simple format. This is given by:

assert condition, error_message (optional)

  • The assert condition includes the boolean statement.

  • Error_message is an optional component. It displays the message when the assert condition is false.

Example 5:

a=10
b=2
assert b!=0, “error: division by zero”
print(“result”, a/b)

Here, assert b!=0 is an assert condition that checks whether b (denominator) is not equal to zero. In case it is zero, the error_message (error: division by zero) is displayed.

Python Assert Keyword Without Error Message

The assert keyword in Python need not have an error message. The error message is optional. The following example shows how the error message is not really needed while inserting an assert keyword in a program.

Example 6:

# initializing number
a = 7
b = 0

# using assert to check for 0
print("The value of a / b is : ")
assert b != 0
print(a / b)
Output: Assertion error:

The assert statement detects that the condition is false and raises an assertion error Python. Since the error is not specified, the output doesn’t specify the error too. 

Python Assert Keyword With an Error Message

The assert keyword in Python goes well with an error message. Python asserts with a message is good because:

  • When an assertion fails, an error message explains the problem clearly and concisely. It allows developers to comprehend the cause of the failure without having to inspect the code or stack trace. 

  • The error message identifies the specific condition or supposition anticipated to be true but evaluated as false. It provides context regarding what went wrong, making it simpler to locate and correct the error in the code. 

  • Error messages can be utilized as a means of communication between developers. When sharing code or collaborating on projects, error messages that convey the expected conditions and assumptions are beneficial. 

Example 7: 

def calculate_average(numbers):
    assert len(numbers) > 0, "Error: List is empty!"
    average = sum(numbers) / len(numbers)
    return average

empty_data = []
result = calculate_average(empty_data)
print(f"The average is: {result}")

Output: “Error: List is empty!"

Assert Inside A Function

Assert inside a function is used within a function’s code. It serves the same property as before i.e. checking for the validity of assumptions and conditions. It also ensures that specific conditions hold true at any point during the execution of the function. 

Example 8:

The code below comprises a function for calculating the discounted price from the original price by asserting the value of the discount percentage in the range [0,100].

def calculate_discounted_price(original_price, discount):
    assert discount >= 0 and discount <= 100, "Invalid discount percentage!"
    discounted_price = original_price - (original_price * (discount / 100))
    return discounted_price

#trial
price = 1000
discount_percentage = 120

final_price = calculate_discounted_price(price, discount_percentage)
print(f"The final price after a {discount_percentage}% discount is: ${final_price}")

Output "Invalid discount percentage!"

Since the discount percentage is set to 120, the assert statements return false, and the program fails by showing the error message.

Assert With a Boolean Condition

The assert keyword in Python takes the boolean expression as its argument, returning either false or true. The example can understand this:

def check_positive_number(num):
    assert num > 0, "Number should be positive!"
    print("Number is positive.")

# Trial and output
check_positive_number(5)  # Valid positive number
check_positive_number(-2)  # Invalid positive number

Assert Type of Variable in Python

The assert keyword in Python is not a variable. It is just a keyword. This is because:

  • Python's "assert" keyword validates code conditions and assumptions. It checks program execution circumstances.

  • The "assert" statement accepts boolean expressions that evaluate to True or False. If the expression is True, the program runs uninterrupted. An "AssertionError" occurs if the expression evaluates to False.

  • "Assert" helps debug and test code. Developers can claim that conditions are met and immediately detect and debug faults if they are not.

Asserting Dictionary Values

Asserting dictionary values in Python involves verifying the veracity or validity of specific dictionary values. This can be accomplished by combining the "assert" statement with dictionary access and comparison operations

Example:

person = {
    'name': 'John,'
    'age': 30,
    'country': 'USA'
}

assert person['name'] == 'John', "Incorrect name value"
assert person['age'] >= 18, "Age should be 18 or greater"
assert person['country'] in ['USA,' 'Canada'], "Invalid country"

print("All dictionary values are valid.")
  • We use the "assert" statement to validate specific dictionary values in this example. Checked conditions include the validity of the name, age 18 or older, and country being 'USA' or 'Canada.'

  • If any of the conditions are not met, an "AssertionError" with the specified error message is generated. The error messages assist in identifying the unsuccessful value assertion.

  • If all assertions are true, the program advances to the following statements and prints, "All dictionary values are valid."

Practical Application

In practical terms, the keyword "assert" assists with the following:

  • Assertions can be used to validate the accuracy of data, ensuring that it satisfies particular criteria. By placing assertions at critical points in the code, we can rapidly identify problems and isolate their source.

  • Unit testing frequently uses assertions to ensure that functions and methods generate the expected results. We can ensure the code behaves as intended by asserting particular conditions and identifying regressions or unanticipated changes.

  • Using assertions aids in documenting a piece of code's assumptions and expectations (assert Python documentation). By including assertions, we make it plain what conditions are expected to be met, thereby assisting future developers who will be reading and maintaining the code.

Conclusion

The assert keyword in Python is essential for various reasons in the programming languages. The different syntax for assert statements enables the user to verify the conditions and assumptions included in the code. However, it is important to remember that assert in Python is a keyword, not a variable type.

FAQs

Q1. Should assert be used?

Assert should be used for debugging and testing code.

Q2. What is the result of assert in Python?

The assert raises an error if the false value is returned.

Q3. What is the difference between try-except and assert?

Try and except blocks are used for handling exceptions. The assert is used for verifying conditions for the function.

Leave a Reply

Your email address will not be published. Required fields are marked *