On 7/29/2014 3:18 AM, Frank Millman wrote:
Hi all

Python 3.4.1

Here is a simple generator -

def test():
     print('start')
     for i in range(5):
         yield i
     print('done')

x = test()
for j in x:
     print(j)

As expected, the output is -

start
0
1
2
3
4
done

Here I break the loop -

x = test()
for j in x:
     print(j)
     if j == 2:
         break

Now the output is -

start
0
1
2

'done' does not appear, so the generator does not actually terminate. What
happens to it?

It sits there waiting for you to ask for the next value. Add
for j in x: print(j)
to exhaust it.  Even then, it sits there until garbage collected.



--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to