I love assert

Ian Kelly ian.g.kelly at gmail.com
Wed Nov 12 17:04:16 EST 2014


On Wed, Nov 12, 2014 at 2:56 PM, Marko Rauhamaa <marko at pacujo.net> wrote:
> Ethan Furman <ethan at stoneleaf.us>:
>
>> On 11/12/2014 01:41 PM, Marko Rauhamaa wrote:
>>>
>>> Or I might indicate the exhaustion of possibilities:
>>>
>>>       if status == OK:
>>>           ...
>>>       elif status == ERROR:
>>>           ...
>>>       else:
>>>           assert status == WARNING
>>>           ...
>>
>> And here's a nice example of what one should NOT do. Imagine that a
>> new status, CONFUSED is added, the above code is not modified to
>> handle it, and for whatever reason the program is being run optimized
>> -- the assert is not there, and CONFUSED is treated the same as
>> WARNING.
>
> How would it be better if you removed the assert then?

You don't need to remove it. Just reorganize it to make sure it
indicates actual exhaustion of possibilities. E.g. using the "assert
False" pattern from your post:

if status == OK:
    ...
elif status == ERROR:
    ...
elif status == WARNING:
    ...
else:
    assert False



More information about the Python-list mailing list