Alan Gauld via Tutor wrote: > 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...
I don't have a use case, but here's how to retrieve the return value: >>> def gen(): ... return 42 ... yield ... >>> try: next(gen()) ... except StopIteration as err: print(err.value) ... 42 _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor