discarded iterator.next() at interactive global scope doesn't bump interator??
Bengt Richter
bokr at oz.net
Sun Sep 4 03:46:37 EDT 2005
Is this a well known bug that's been fixed?
I couldn't find any discussion of it, but maybe my googling's off today ;-/
>>> def foo():
... it = iter(range(10))
... while True:
... i = it.next()
... print i
... if i&3==0:
... print 'skipping next'
... it.next()
...
>>>
------------------< This looks ok:
>>> foo()
0
skipping next
2
3
4
skipping next
6
7
8
skipping next
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 4, in foo
StopIteration
>>>
------------< now at interactive global scope:
>>> it = iter(range(10))
>>> while True:
... i = it.next()
... print i
... if i&3==0:
... print 'skipping next'
... it.next()
...
-----<this doesn't look ok: it.next() is apparently not doing anything:
0
skipping next
1
2
3
4
skipping next
5
6
7
8
skipping next
9
Traceback (most recent call last):
File "<stdin>", line 2, in ?
StopIteration
----------------------------< but add a print, and all is well??
>>> it = iter(range(10))
>>> while True:
... i = it.next()
... print i
... if i&3==0:
... print 'skipping next'
... print '-->', it.next()
...
0
skipping next
--> 1
2
3
4
skipping next
--> 5
6
7
8
skipping next
--> 9
Traceback (most recent call last):
File "<stdin>", line 2, in ?
StopIteration
I guess it could be in the read-eval-print loop
I have an old 2.4 on NT4 and am running it in a console window.
Python 2.4b1 (#56, Nov 3 2004, 01:47:27)
[GCC 3.2.3 (mingw special 20030504-1)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Regards,
Bengt Richter
More information about the Python-list
mailing list