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