Named code blockes

Carlos Ribeiro cribeiro at mail.inet.com.br
Sat Apr 14 19:22:55 EDT 2001


At 16:55 14/04/01 -0400, Steven D. Majewski wrote:
>( But maybe you're thinking of a different syntax for Python
>   than I can imagine from other lang. I've seen. If you show
>   me a clear example, I'll reconsider. )

I've came up with a example. The actual code does nothing useful (it's 
non-sense :-), but it serves to show one possible syntax:

for i in list1 as Loop1:
     for j in list2 as Loop2:
         if j in list1:
             continue Loop1
         for k[j] in list3 as Loop3:
             if k[j] in list1:
                  break Loop1

The label is specified by the "as label" construct right after the loop 
statement. Both break and continue could take an optional parameter to 
specify the loop to which they do refer.

The word "as" is already used in the import statement. In this case, it 
would specify a label for the break and continue statements. "as" doest not 
need to me made a reserved word, because it can appear only in a well 
defined context. Optionally, the word "label" could also be used:

for i in list1 label Loop1:
     (...)

Two things called my attention while writing the simple example above:

- *In my example*, the "continue Loop1" statement will have exactly the 
same effect as a "break" statement. In fact, in many cases the effect will 
be the same. If you don't have any extra logic after the inner loop, both 
"break" and "continue label" will be equivalent.

- There are some similarities between these labeled break/continue 
constructs and continuations. One possible implementation for this kind of 
construct would be the use of one type continuations. The Stackless people 
could clarify this a little bit better for me.


Carlos Ribeiro






More information about the Python-list mailing list