Chris Angelico wrote, on January 03, 2017 3:35 PM > > On Wed, Jan 4, 2017 at 10:05 AM, Deborah Swanson > <pyt...@deborahswanson.net> wrote: > > Ok, I learned how to use generators in Python 2.7.8, which may be > > different from Python 3 for generators. But I learned from MIT's > > online introduction to python course, and they certainly > seem to know > > python well. So what is the correct way to call the > generator's next > > yield in Python 3? We only learned to use the next function. If you > > don't use the next function, what do you use? > > The built-in next function, not the next method. > > # don't do this > gen.next() > > # do this > next(gen) > > ChrisA
You speak the truth! I never doubted, but since I still have 2.7.8 on my system I decided to try it out. For a simple little Fibbonacci number generator: def genFib (): fibn_1 = 1 #fib(n-1) fibn_2 = 0 #fib(n-2) while True: # fib(n) = fib(n-1) + fib(n-2) next = fibn_1 + fibn_2 yield next fibn_2 = fibn_1 fibn_1 = next and at the console: >>> fib = genFib() >>> fib.next() 2.7.8 works, and cranks out as many Fibbonacci numbers as you could want. But in 3.4.3 you get: Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> fib.next() AttributeError: 'generator' object has no attribute 'next' Then, going the other way, next(fib) works in both versions. -- https://mail.python.org/mailman/listinfo/python-list