for...else
acdr
mail.acdr at gmail.com
Tue Jun 2 10:00:12 EDT 2015
The first solution in your e-mail (with a Cleanup exception) is
definitely very close, functionally, to what I want to accomplish. In
effect, it's the same structure as my original suggestion of
"for...then...else", except now it'd be "try: for...else...except".
That's workable. I can even cheat and rename the Cleanup class to
"Break" for clarity.
I'm guessing that there is not much support for functionality like
this to be built in, in a much less verbose manner, like the
"for...else" functionality? :P
On 6/2/15, Jean-Michel Pichavant <jeanmichel at sequans.com> wrote:
> ----- Original Message -----
>> From: "acdr" <mail.acdr at gmail.com>
>> To: "Jean-Michel Pichavant" <jeanmichel at sequans.com>
>> Cc: python-list at python.org
>> Sent: Tuesday, 2 June, 2015 2:52:21 PM
>> Subject: Re: for...else
>>
>> That would work for my example, but it would only really work if all
>> the calculations are in a nice function.
>
> You cannot blame me for considering the example you provided ;)
>
> What about this:
>
> class Cleanup(Exception): pass
>
> try:
> for x in it:
> if c1():
> raise Cleanup()
> c2()
> if c3():
> raise Cleanup()
> except Cleanup:
> #do the cleanup
> pass
>
> If you can make c1 c3 raise themselves Cleanup, it's even better.
>
> Now if you're able to write a cleanup function that can handle the case when
> there's nothing to clean, everything becomes crystal clear:
>
> from contextlib import contextmanager
>
> @contextmanager
> def cleanup():
> yield
> # here do the cleaning
> print 'I am cleaning'
>
> def do_the_job():
> if c1() : return
> c2()
> if c3() : return
>
> with cleanup():
> do_the_job()
>
> JM
>
>
> -- IMPORTANT NOTICE:
>
> The contents of this email and any attachments are confidential and may also
> be privileged. If you are not the intended recipient, please notify the
> sender immediately and do not disclose the contents to any other person, use
> it for any purpose, or store or copy the information in any medium. Thank
> you.
>
More information about the Python-list
mailing list