[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