[Tutor] generator object

Alan Gauld alan.gauld at yahoo.co.uk
Wed Aug 31 18:24:52 EDT 2016


On 31/08/16 08:56, Alan Gauld via Tutor wrote:

> A generator function can return any kind of object including
> basic types like numbers, bool etc.In addition, a generator
> function yields values which can also be of any type.

Hmmm.
After reading Steven's response I played around a bit.

While a generator function can indeed have a return
value in it I'm not sure how one would use it.

I tried:

def gen(x):
   if x > 0: return 42
   else: yield x

Then I tried

x = gen(2)
and
x = list(2)

But neither show any evidence of the return value.

Can anyone provide a valid use-case for this feature?

It definitely doesn't work the way I thought it did...
But I've never needed to use return in a generator
so never tried it before!

What I expected/hoped it would do was act like a
yield but also exit the function. No such luck.

I can't even recall where I read about using returns
in generator functions and what rationale was
provided. It doesn't seem to be specifically
discussed in the python docs. The only use I
can see is to terminate the function immediately
but the return value appears to disappear in smoke...

-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos




More information about the Tutor mailing list