[Python-Dev] PEP 340: Breaking out.
Pierre Barbier de Reuille
pierre.barbier at cirad.fr
Tue May 3 17:25:09 CEST 2005
Tom Rothamel a écrit :
> I have a question/suggestion about PEP 340.
>
> As I read the PEP right now, the code:
>
>
> while True:
>
> block synchronized(v1):
> if v1.field:
> break
>
> time.sleep(1)
>
>
> Will never break out of the enclosing while loop. This is because the
> break breaks the while loop that the block statement is translated
> into, instead of breaking the outer True statement.
Well, that's exactly what it is intended to do and what I would expect
it to do ! break/continue affect only the inner-most loop.
>
> Am I understanding this right, or am I misunderstanding this?
>
> If I am understanding this right, I would suggest allowing some way of
> having the iterator call continue or break in the enclosing
> context. (Perhaps by enclosing the entire translation of block in a
> try-except construct, which catches Stop and Continue exceptions
> raised by the generator and re-raises them in the outer context.)
>
> I hope this helps.
>
I don't want it like that ! This would differ with the break/continue
used in other loops. If you need to break from many loops, enclose them
into a function and return from it !
Pierre
--
Pierre Barbier de Reuille
INRA - UMR Cirad/Inra/Cnrs/Univ.MontpellierII AMAP
Botanique et Bio-informatique de l'Architecture des Plantes
TA40/PSII, Boulevard de la Lironde
34398 MONTPELLIER CEDEX 5, France
tel : (33) 4 67 61 65 77 fax : (33) 4 67 61 56 68
More information about the Python-Dev
mailing list