Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   discarded iterator.next() at interactive global scope doesn't bump interator?? (http://www.velocityreviews.com/forums/t348758-discarded-iterator-next-at-interactive-global-scope-doesnt-bump-interator.html)

Bengt Richter 09-04-2005 07:46 AM

discarded iterator.next() at interactive global scope doesn't bump interator??
 
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

Peter Otten 09-04-2005 08:10 AM

Re: discarded iterator.next() at interactive global scope doesn't bump interator??
 
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:

>>> for i in range(5):

.... 42
....
42
42
42
42
42

Whereas:

>>> for i in range(5):

.... None
>>>


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


Bengt Richter 09-04-2005 12:17 PM

Re: discarded iterator.next() at interactive global scope doesn't bump interator??
 
On Sun, 04 Sep 2005 10:10:33 +0200, Peter Otten <__peter__@web.de> wrote:

>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:
>
>>>> for i in range(5):

>... 42
>...
>42
>42
>42
>42
>42
>
>Whereas:
>
>>>> for i in range(5):

>... None
>>>>

>
>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


All times are GMT. The time now is 08:31 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.