retry in try:...except:

Tim Peters tim.one at home.com
Sun Feb 11 15:57:39 EST 2001


[Dan Parisien]
> Does something like this exist
>
> def getval(self, key)
>         try:
>                 return self.__keys[key]
>         except KeyError:
>                 self.__keys[key] = None
>                 retry #!!!!

No.  In this specific case, you could get the effect you're after by
replacing "retry" with "return self.getval(key)".  Then if you screw up,
you'll eventually get a nice "maximum recursion depth exceeded" error
instead of an infinite loop <0.5 wink>.  Slicker, replace the whole body
with:

    return self.__keys.setdefault(key, None)

or (more obscure to my eyes):

    return self.__keys.setdefault(key)

python-isn't-keen-for-magical-control-flow-ly y'rs  - tim





More information about the Python-list mailing list