[Python-ideas] BUG in standard while statement

Stephan Sahm Stephan.Sahm at gmx.de
Wed Sep 9 19:10:18 CEST 2015


Dear all

I found a BUG in the standard while statement, which appears both in python
2.7 and python 3.4 on my system.

It usually won't appear because I only stumbled upon it after trying to
implement a nice repeat structure. Look:
​```​
class repeat(object):
    def __init__(self, n):
        self.n = n

    def __bool__(self):
        self.n -= 1
        return self.n >= 0

    __nonzero__=__bool__

a = repeat(2)
```
the meaning of the above is that bool(a) returns True 2-times, and after
that always False.

Now executing
```
while a:
    print('foo')
```
will in fact print 'foo' two times. HOWEVER ;-) ....
```
while repeat(2):
    print('foo')
```
will go on and go on, printing 'foo' until I kill it.

Please comment, explain or recommend this further if you also think that
both while statements should behave identically.

hoping for responses,
best,
Stephan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20150909/95ea7879/attachment.html>


More information about the Python-ideas mailing list