Implementing a Python decorator for argument validation
Write a Python program that implements a decorator to validate function arguments based on a given condition.
Sample Solution:
Python Code:
def validate_arguments(condition):
def decorator(func):
def wrapper(*args, **kwargs):
if condition(*args, **kwargs):
return func(*args, **kwargs)
else:
raise ValueError("Invalid arguments passed to the function")
return wrapper
return decorator
@validate_arguments(lambda x: x > 0)
def calculate_cube(x):
return x ** 3
print(calculate_cube(5)) # Output: 125
print(calculate_cube(-2)) # Raises ValueError: Invalid arguments passed to the function
Sample Output:
125 Traceback (most recent call last): ......... print(calculate_cube(-2)) # Raises ValueError: Invalid arguments passed to the function ........................ raise ValueError("Invalid arguments passed to the function") ValueError: Invalid arguments passed to the function
Explanation:
In the above exercise, the "calculate_cube()" function is decorated with @validate_arguments. The validation condition is specified as a lambda function lambda x: x > 0, which checks if the argument x is greater than 0. When "calculate_cube()" is called with a positive number, it executes normally and returns the square of the input. However, if it's called with a negative number, it raises a ValueError indicating invalid arguments were passed.
Flowchart:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous: Implementing a Python decorator for function results caching.
Next: Implementing a Python decorator for function retry .
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics