while True or while 1

88888 Dihedral dihedral88888 at googlemail.com
Mon Jan 23 17:42:02 EST 2012

在 2012年1月24日星期二UTC+8上午4时50分11秒,Andrea Crotti写道:
> On 01/23/2012 06:05 PM, Evan Driscoll wrote:
> >
> > To play devil's advocate for a moment, if you have the choice between 
> > two ways of writing something, A and B, where both are basically the 
> > same in terms of difficulty to write, difficulty to maintain, and 
> > difficulty to understand, but A is faster than B, even if just by a 
> > hair, why NOT write A?
> >
> > It's like 'iter++' vs '++iter' in a C++ for loop. For ints, or for 
> > some iterators with optimization, it makes no difference. But the 
> > latter will be faster in debug builds, and *might* be faster in 
> > release builds if you have a complicated iterator. So why NOT make 
> > for(...; ...; ++i) the typical way of writing a for loop?
> >
> > In the Python world, is 'while 1' any harder to understand than 'while 
> > True'? I'm about as staunch a supporter as you'll find for the idea 
> > that 'while 1' should throw an exception, and even *I* think that 
> > 'while 1' is about the least-offensive idiom out there. If 'while 1' 
> > throws you off, I'd hate to see what you do when you learn that Python 
> > accepts loops like 'while x' where the condition evaluates to true if 
> > x is a non-zero integer and false if x is 0.
> >
> >
> > All that said, I like the 'while "stuff to do"' idea.
> >
> > Evan
> I think it's not the same, iter++ or ++iter is exactly the same in terms 
> of readability, so of course
> if one might be a bit faster, it should be used.
> while 1 works because the 1 is converted to boolean automatically, but 
> why not just writing a boolean
> in the first place?
> It's not bad of course but to me it's not very Pythonic, and reminds me C.
> At that point I also prefer the "while 'might be long loop'" idea, which 
> at least
> adds some value *and* it might be very slightly faster too.

 A fake generator that can't be cascaded for more processing  can be called
 an iterator by the definition of an iterator. 

But that is miss-leading in implementing silly trivial non-qualified iterators.

More information about the Python-list mailing list