On 12 March 2015 at 16:52, Rustom Mody <rustompm...@gmail.com> wrote: > > On Thursday, March 12, 2015 at 9:58:07 PM UTC+5:30, Steven D'Aprano wrote: >> Rustom Mody wrote: >> >> > >> > Say I have a simple yielding function: >> > >> > def foo(x): >> > yield x+1 >> > yield x+2 >> > >> > And I have >> > >> > g = foo(2) >> > >> > If I look at type, g's type is 'generator' whereas foo is just plain-ol >> > 'function.' >> > >> > Whereas in informal usage we say foo is a generator. >> >> Hopefully it is clear from context what we actually mean. When in doubt, we >> should be explicit. > > There is a very important 'context' where both have to exist together -- > teaching beginners.
It is definitely important to draw the distinction between a generator function and a generator in teaching. I would use distinct terminology in any case. It's also important where possible to use the same terminology as is used in the various different sources of documentation that your students will encounter so inventing a new term like "generator factory" is probably a bad idea. > foo's are written to produce g's. g's come from foo-like. > > Better naming would help clarify -- your 'factory' is the best Ive seen so > far. I dislike the term "generator factory". To me it suggests something like foo below: def baz(): yield 4 def bar(): yield 6 yield 7 def foo(x): if x > 4: return baz() else: return bar() The existing terminology seems fine to me: A generator function is a special kind of function containing a yield statement that always returns a generator. A generator expression is a special kind of expression that evaluates to a generator. A generator is a special type of iterator that results from generator functions and generator expressions. > But the docs?!?! Hoo Boy My head spins trying to grok this > https://docs.python.org/3/reference/expressions.html#generator-expressions > And thats after being familiar with the origins of the idea in > scheme/simula/CLU etc. Perhaps the docs can be improved. I wouldn't recommend that particular page to anyone who wasn't already familiar with the subject though. Oscar -- https://mail.python.org/mailman/listinfo/python-list