seeking deeper (language theory) reason behind Python design choice
Ian Kelly
ian.g.kelly at gmail.com
Fri May 11 11:03:11 EDT 2018
On Fri, May 11, 2018 at 7:40 AM, Chris Angelico <rosuav at gmail.com> wrote:
> So, yes, your function's name is outright lying. But there's nothing
> about it that is *pretending* to be a normal function. It IS a normal
> function.
The detail of whether it's a generator function affects the function's
execution and may be relevant to the caller. Here are two hypothetical
functions. They do some processing with side-effects over a bunch of
items and return the processed items. However, one is a generator
function and the other just returns a list.
def process_items(items):
...
def handle_items(items):
...
Now, we can agree that these ought to be better documented, but say I
want to call one of these for the side effects and ignore the return
value. Just from reading the first line of the function, do I need to
iterate over the result, or not?
Scenario 2. I have two "while True" loops. One is potentially infinite
and the other is not.
while True:
...
while True:
...
Obviously, it's important to know whether a loop might be infinite
before I run the code that includes it. Just from reading the first
line of the loop, how do I know? You can argue that they should use
strings instead to describe what they do, which would help, although I
think that's potentially confusing.
I don't see these two situations as being fundamentally different. Do you?
More information about the Python-list
mailing list