discarded iterator.next() at interactive global scope doesn't bump interator??

B

Bengt Richter

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 ;-/
... it = iter(range(10))
... while True:
... i = it.next()
... print i
... if i&3==0:
... print 'skipping next'
... it.next()
...
------------------< This looks ok: 0
skipping next
2
3
4
skipping next
6
7
8
skipping next
Traceback (most recent call last):
File "<stdin>", line 1, in ?
... 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?? ... 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
 
P

Peter Otten

Bengt Richter wrote:

[it.next() appears to be a noop in the interactive interpreter]
I guess it could be in the read-eval-print loop

Indeed:
.... 42
....
42
42
42
42
42

Whereas:

Every line with an expression that doesn't evaluate to None is echoed.
Therefore

it.next()

and

print it.next()

look the same when repr(it.next()) == str(it.next()).

No bug :)

Peter
 
B

Bengt Richter

Bengt Richter wrote:

[it.next() appears to be a noop in the interactive interpreter]
I guess it could be in the read-eval-print loop

Indeed:
... 42
...
42
42
42
42
42

Whereas:

Every line with an expression that doesn't evaluate to None is echoed.
Therefore

it.next()

and

print it.next()

look the same when repr(it.next()) == str(it.next()).

No bug :)
D'oh. I said it, but I didn't hear myself ;-/

Regards,
Bengt Richter
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,900
Latest member
Nell636132

Latest Threads

Top