def argument_test_natural_number(f):
def helper(x):
if type(x) == int and x > 0:
return f(x)
else:
raise Exception("Argument is not an integer")
return helper
@argument_test_natural_number
def is_prime(n):
return all(n % i for i in range(2, n))
for i in range(1,10):
print(i, is_prime(i))
print(is_prime(-1))
1 True
2 True
3 True
4 False
5 True
6 False
7 True
8 False
9 False
Traceback (most recent call last):
File "/home/bernd/deco_test.py", line 60, in <module>
print(is_prime(-1))
File "/home/bernd/deco_test.p.py", line 50, in helper
raise Exception("Argument is not an integer")
Exception: Argument is not an integer
29.608813203268074 18.84955592153876