"Rance Hall" <[email protected]> wrote
I'd like to define a datavalidation function that returns true if
data
is valid, and false if it isn't.
Here is the clincher. the logic of the data validator needs to be
able to handle different types of data testing on request.
This is a good candidate for a factory function which takes
a function as a parameter. The function can be applied to
the data and the resultant function returned as the validator
used by your code. Something like(untested):
def makeValidator(operator, validValues)
def validator(data, vals = validValues):
return operator(data, vals)
return validator
validLowFloat = makeValidator(lambda d,v: type(d) == float and v[0] <
d < v[1],
(0.0,10.0))
validChoice = makeValidator(lambda d,v: type(d) == str and d.lower()
in v, ("yes", "no"))
x = 12.0
print validLowFloat(x) # returns False
y = 7.4
print validLowFloat(y) # returns True
s = "Maybe"
print validChoice(s) # -> False
print validChoice("No") # -> True
If you really want to get clever you could probably wrap
this as a decorator!
Whether its worth the effort over just defining validators as needed
is another matter...
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor