python/decorator_validation.py

17 lines
413 B
Python

def validate_decorator(func):
def wrapper(number):
if not isinstance(number, int) or number < 0:
raise ValueError("Input must be a non-negative integer")
return func(number)
return wrapper
@validate_decorator
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
# Usage
print(factorial(2))
# factorial(-1) # This will raise an error