New submission from swanson:
in 6.2.9. Yield expressions
end of 1st paragraph:
"Using a yield expression in a function’s body causes that function to be a generator."
As the very next sentence explains, a generator is what's returned by such a function, not the function itself.
Basically, it should be sufficient to add the word "function" to the end of that sentence: "... generator function." However, this error does NOT exist in 3.0 to 3.2 - just in 3.3 to 3.6, so I suggest just using the same wording as 3.0 to 3.2:
"Using a yield expression in a function definition is sufficient to cause that definition to create a generator function instead of a normal function."
assignee: docs@python components: Documentation messages: 246841 nosy: docs@python, swanson priority: normal severity: normal status: open title: Error in yield expression documentation versions: Python 3.3, Python 3.4, Python 3.5, Python 3.6
Martin Panter added the comment:
Technically, the glossary defines the unqualified term “generator” as the factory function: https://docs.python.org/3.5/glossary.html#term-generator. (The 3.6 documentation should say the same but the build has been broken or out of date for a few months.) Though I agree adding the old wording would make it clearer.
The 3.3 change was made in revision e02da391741f for Issue 12704.
nosy: +nikratio, vadmium stage: -> needs patch
swanson added the comment:
Okay, interesting - I hadn't checked the glossary. I don't ultimately care what it's called as long as the documentation is clear and consistent. But for anyone just looking at the names of the classes and the class hierarchy, they'd come away saying, "A generator is a type of iterator," not "A generator is a type of function." (Functions can't even have subtypes.) If the docs are painting a different picture than the already existing reality, it seems like that would be confusing to anyone who doesn't already know how they work. (If you already know how something works, you don't really need the docs, so it's easy to think they're clearer than they really are.)