classification
Title: Error in yield expression documentation
Type: Stage: patch review
Components: Documentation Versions: Python 3.10
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: docs@python Nosy List: docs@python, jacobtylerwalls, martin.panter, nikratio, swanson
Priority: normal Keywords: easy, patch

Created on 2015-07-17 06:53 by swanson, last changed 2021-02-27 16:07 by jacobtylerwalls.

Pull Requests
URL Status Linked Edit
PR 24663 open jacobtylerwalls, 2021-02-27 16:07
Messages (3)
msg246841 - (view) Author: (swanson) Date: 2015-07-17 06:53
https://docs.python.org/3/reference/expressions.html

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."

NO!

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."
msg246869 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2015-07-17 23:13
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.
msg246872 - (view) Author: (swanson) Date: 2015-07-18 00:23
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.)
History
Date User Action Args
2021-02-27 16:07:59jacobtylerwallssetkeywords: + patch
nosy: + jacobtylerwalls

pull_requests: + pull_request23449
stage: needs patch -> patch review
2021-01-12 15:43:40iritkatrielsetkeywords: + easy
versions: + Python 3.10, - Python 3.3, Python 3.4, Python 3.5, Python 3.6
2015-07-18 00:23:14swansonsetmessages: + msg246872
2015-07-17 23:13:53martin.pantersetnosy: + nikratio, martin.panter

messages: + msg246869
stage: needs patch
2015-07-17 06:53:39swansoncreate