Oh I like it. Indexing the loop number from innermost to outermost makes more sense. The starting implicit index in case of alone continue/break will always be known (either 1 or zero). Of course it doesn’t make sense to use negative index for the loop because breaking from the parent loop will break from any child loop.
> On Dec 4, 2020, at 11:49 AM, Aveheuzed <a.masson...@ntymail.com> wrote: > >> >> Why not start at break 0 not break 1, similar to sequences starting at index >> 0? >> >> Maybe if break alone without integer, it breaks from the loop it is at >> similar to the behavior we have right now in Python. >> >> E.g., >> >> for matrix in matrix_array : # Index 0 >> >> for x in range(0,10) : # Index 1 >> >> for y in range(0,10) : # Index 2 >> >> for z in range(0,10) : # Index 3 >> >> if matrix[x][y][z] == 0 : >> >> print("Found !") >> >> continue 3 # which is equivalent to continue/break alone >> > Ok, so, that's yet another proposition; what I meant by "the number of loops > to break" was not to number the loops in a constant way, but rather to > specify the number of loop-blocks whose flow to break. In other words, my > version's behavior depends on the "callsite" if you want to target a specific > line of code. > > To me, to "manually" do "break n", you could read the script upwards starting > at the break's line, and count the number of for/while loops you encounter; > when your count matches break's parameter, switch back to the standard code > flow. Your proposal, on the other hand, requires getting back to the start of > the script and counting loops downwards. That's not how I understand the > standard break/continue's behavior, tell me if I'm mistaken :-[… > > I meant to start numbering at 1, not at 0, also because of the semantics of > the statement : "break n" would mean "break from n loops", not "break up to > the n-th nested loop". Therefore, the parameter-less version, "break;", witch > I always read as "break out of the (innermost) loop" would read "break 1". > For me, that's not an index after "break", it's a cardinal: we don't break > "the loop 0", we break "the first loop". > > An added benefit from numbering from one would be to allow a "break 0" > statement with no effect, e.g. for debugging purposes. (I can see other, more > esoteric uses, too, if arbitrary expressions were allowed, but, hey, > consenting adults here.) > > I have tried to search for examples of numbering from 1 in Python, I'm sure > there are some, but I can't recall any just now ;-). Anyway, that's not the > core point of the proposal; I can concede that one. > > > > One final point : with my way of numbering, the default parameter would > always be 1 (or 0, whatever), as opposed to your suggestion where you number > the loops from outermost to innermost. In our example, if I added / removed a > loop in the block, a bare "continue;" would have its default parameter vary > implicitly. Therefore, "continue 3", as you put it, would not be equivalent > to "continue" alone. I don't like that way of doing it : a default parameter > has always been a known, constant value ! Of course, you could always > differentiate between "continue" and "continue <n>", saying they are two > different statements that behave differently, but then I'd rather have them > named differently… > > > > Regards, > > Alexis > > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/USHBNW3YIOTG5CIZDZIELMHBCGWJ5Y7Z/ > Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/SOSF2JUUJTD6ZHAVCFQ7K3BP5HG2DHKU/ Code of Conduct: http://python.org/psf/codeofconduct/