On 26/09/18 08:50, vito.detul...@gmail.com wrote:
Hi
Today I've added a couple of lines in my source code, and I'm very ashamed of 
it.
it "runs", and I know what it does (for now), but it's "too clever".
I have "abused" the "else" clause of the loops to makes a break "broke" more 
loops


     for i in range(10):
         print(f'i: {i}')
         for j in range(10):
             print(f'\tj: {j}')
             for k in range(10):
                 print(f'\t\tk: {k}')

                 if condition(i, j, k):
                     break

             else:        # if there weren't breaks in the inner loop,
                 continue # then make anoter outer loop,
             break        # else break also the outer one

         else:
             continue
         break

the "magic" is in that repeated block... it's so convoluted to read... still it's very 
useful to omit "signals" variables or the need to refactor it in a function with an 
explicit return or other solutions.

is there any chance to extends the python grammar to allow something like


     for i in range(10) and not break:
         print(f'i: {i}')
         for j in range(10) and not break:
             print(f'\tj: {j}')
             for k in range(10):
                 print(f'\t\tk: {k}')

                 if condition(i, j, k):
                     break


with the semantics of break a loop if an inner loop "broke"?


To me the Ned Batchelder presentation https://www.youtube.com/watch?v=EnSu9hHGq5o "Loop like a Native" is the definitive way on how to deal with loops in Python.

--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to