On 2009-07-02, Paul Rubin <http> wrote:
> Tim Harig <user...@ilthio.net> writes:
>> That being the case, it might be a good idea either to handle the situation
>> and raise an exception or add:
>> assert self.lower <= self.higher
>> That way an exception will be raised if there is an error somewhere else
>> in the code rather then silently passing a possibly incorrect value.
> Well, that assert is not right because you have to handle the case
> where one of the values is None.  The general sentiment is reasonable
> though, if you're concerned that the precondition may not be valid.

Sorry, it worked under 2.5:

2.5     >>> lower = None
2.5     >>> higher = 10
2.5     >>> assert lower <= higher
2.5     >>> assert higher < lower
2.5     Traceback (most recent call last):
2.5       File "<stdin>", line 1, in <module>
2.5     AssertionError
2.5     >>> higher = -10
2.5     >>> assert lower <= higher
2.5     >>> assert higher < lower
2.5     Traceback (most recent call last):
2.5       File "<stdin>", line 1, in <module>
2.5     AssertionError

None seems to have been evaluated less then any integer.  The same isn't
true under 3.0:

3.0     >>> lower = None
3.0     >>> higher = 10
3.0     >>> assert lower <= higher
3.0     Traceback (most recent call last):
3.0       File "<stdin>", line 1, in <module>
3.0     TypeError: unorderable types: NoneType() <= int()

Then it is probably easier to just handle it in the conditionals and raise
an exception manually.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to