Behavior of the for-else construct
Barry Scott
barry at barrys-emacs.org
Thu Mar 3 10:40:45 EST 2022
> On 3 Mar 2022, at 13:24, computermaster360 <computermaster360 at gmail.com> wrote:
>
> I want to make a little survey here.
>
> Do you find the for-else construct useful?
No. I always have to look up what condition the else fires on.
> Have you used it in
> practice?
No.
> Do you even know how it works, or that there is such a thing
> in Python?
Yes (when I read the docs) and yes.
> I have used it maybe once. My issue with this construct is that
> calling the second block `else` doesn't make sense; a much more
> sensible name would be `then`.
There was a thread on this list asking for alternative syntax for the
for: else: that was not taken up. Something like nobreak: instead of else:
>
> Now, imagine a parallel universe, where the for-else construct would
> have a different behavior:
>
> for elem in iterable:
> process(elem)
> else:
> # executed only when the iterable was initially empty
> print('Nothing to process')
>
> Wouldn't this be more natural? I think so. Also, I face this case much
> more often than having detect whether I broke out of a loop early
> (which is what the current for-else construct is for).
>
> Now someone may argue that it's easy to check whether the iterable is
> empty beforehand. But is it really? What if it's an iterator?
> Then one would have to resort to using a flag variable and set it in
> each iteration of the loop. An ugly alternative would be trying to
> retrieve
> the first element of the iterable separately, in a try block before
> the for-loop, to find out whether the iterable is empty. This would of
> course
> require making an iterator of the iterable first (since we can't be
> sure it is already an iterator), and then -- if there are any elements
> -- processing
> the first element separately before the for-loop, which means
> duplicating the loop body. You can see the whole thing gets really
> ugly really quickly...
>
> What are your thoughts? Do you agree? Or am I just not Dutch enough...?
Barry
> --
> https://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list