<br>Actually, I'd probably create a class with 3 arguments - an initial value, a lower bound, and an upper bound, give it a _check method, and call _check from the various operator methods.  The class would otherwise impersonate an int.<br>
<br>In code that isn't performance-critical, it's better to check for errors on a level that seems excessive to many; this is how I like to program - it tends to stop bugs in their tracks, rather than allowing them to manifest somewhere far away, elsewhere in the code,  yielding a potentially time-consuming bug chase.  So I'll have if's and asserts checking assumptions everywhere - at the beginning of a callable, at the end, in the middle - inspired by Eiffel's heavy assumption checking.<br>
<br>Python code doesn't need to be troublesome.  I'm told this is how a famous chess engine (was it Crafty?) got pretty much all of its bugs out.<br><br>Or if things don't need to be in the correct range every step of the way (or rather, if they must be able to temporarily step outside their bounds), then you could make self._check() be self.check(), and call it externally on an as-needed basis instead.<br>
<br>Performance-oriented programming is fun, but not all programming is performance-oriented, and shouldn't be treated as though it is.<br><br><div class="gmail_quote">On Fri, Mar 18, 2011 at 7:24 AM, Martin De Kauwe <span dir="ltr"><<a href="mailto:mdekauwe@gmail.com">mdekauwe@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hi,<br>
<br>
if one has a set of values which should never step outside certain<br>
bounds (for example if the values were negative then they wouldn't be<br>
physically meaningful) is there a nice way to bounds check? I<br>
potentially have 10 or so values I would like to check at the end of<br>
each iteration. However as the loop is over many years I figured I<br>
probably want to be as optimal as possible with my check. Any<br>
thoughts?<br>
<br>
e.g. this is my solution<br>
<br>
# module contain data<br>
# e.g. print state.something might produce 4.0<br>
import state as state<br>
<br>
def main():<br>
    for i in xrange(num_days):<br>
        # do stuff<br>
<br>
        # bounds check at end of iteration<br>
        bounds_check(state)<br>
<br>
<br>
def bounds_check(state):<br>
    """ check state values are > 0 """<br>
    for attr in dir(state):<br>
        if not attr.startswith('__') and getattr(state, attr) < 0.0:<br>
            print "Error state values < 0: %s" % (attr)<br>
            sys.exit()<br>
<br>
if __name__ == "__main__":<br>
    sys.exit(main())<br>
<br>
thanks<br>
<br>
Martin<br>
<font color="#888888">--<br>
<a href="http://mail.python.org/mailman/listinfo/python-list" target="_blank">http://mail.python.org/mailman/listinfo/python-list</a><br>
</font></blockquote></div><br>