Confused compare function :)
Hans Mulder
hansmu at xs4all.nl
Thu Dec 6 09:21:22 EST 2012
On 6/12/12 14:58:01, Chris Angelico wrote:
> On Fri, Dec 7, 2012 at 12:33 AM, Thomas Rachel
> <nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915 at spamschutz.glglgl.de>
> wrote:
>> > Am 06.12.2012 09:49 schrieb Bruno Dupuis:
>> >
>>> >> The point is Exceptions are made for error handling, not for normal
>>> >> workflow. I hate when i read that for example:
>>> >>
>>> >> try:
>>> >> do_stuff(mydict[k])
>>> >> except KeyError:
>>> >> pass
>> >
>> > I would do
>> >
>> > try:
>> > value = mydict[k]
>> > except KeyError:
>> > pass
>> > else:
>> > do_stuff(k)
>> >
>> > Why? Because do_stuff() might raise a KeyError, which should not go
>> > undetected.
> (Assuming first off that you meant "do_stuff(value)", not
> "do_stuff(k)", in that last line)
> That has quite different functionality, though. The original wouldn't
> have called do_stuff at all if k is not in dict, behaviour which is
> matched by both his EAFP and his LBLY. But your version, in the event
> of a KeyError, will call do_stuff with the previous value of value, or
> raise NameError if there is no such previous value. I don't think
> that's intentional.
Errhm, no. Look again. The do_stuff(value) call is in the "else:"
clause, so it will only be done of there was no Exception of any
kind, and in that case the assignment to value must have succeeded.
-- HansM
More information about the Python-list
mailing list