[Python-ideas] Control Flow - Never Executed Loop Body
Stephen J. Turnbull
stephen at xemacs.org
Tue Mar 22 11:09:42 EDT 2016
Chris Barker writes:
> On Mon, Mar 21, 2016 at 1:01 AM, Stephen J. Turnbull <stephen at xemacs.org>
> wrote:
>
> > AFAICS the OP's idea has a trivial and efficient expansion:
>
> I'll take your word for it that this is efficient, and it is
> trivial in amount of code to write, but it is not the least bit
> trivial to read or write.
By "efficient" I mean only that the loop is unchanged. Bonus is that
only one assignment and one test are needed outside of the loop. The
only reason I could think of at the time that it might not be trivial
to read is that a reader is unfamiliar with the "sentinel = object()"
idiom. Otherwise, "for" and "if" are the most basic of Python syntax,
so I felt safe in using that word.
Writing is another matter, but that's covered under the "sometimes ya
gotta be Dutch" clause. :-)
> Howver, the motivating example was "the difference between *nothing**as
> error* and *nothing** as really empty*, GUI/Web interfaces display an
> explicit notice in case of empty lists to signify the correct execution of
> a process/action/search or the other case."
>
> Sure -- but this seem to be mixing validation with processing code -- you
> really want to validate your inputs first.
If it's input, yes, but in my experience this would mostly be dealing
with internal state such as a database. Then EAFP applies. For
example, in paging, an empty page is a natural signal for end of
content.
> AND: this would mostly be containers,
"Mostly", maybe, but that's not to say that iterators are an
unimportant case. And if your application involves a mix of
containers and iterators, you may still prefer to use the same idioms
for both cases.
> All that being said:
>
> how about "elempty"?, to go with elif?
-1 Not to my taste, to say the least.
More information about the Python-ideas
mailing list