Looping [was Re: Python and the need for speed]

bartc bc at freeuk.com
Mon Apr 17 14:35:41 EDT 2017


On 17/04/2017 19:02, Ben Bacarisse wrote:
> Marko Rauhamaa <marko at pacujo.net> writes:
>
>> Terry Reedy <tjreedy at udel.edu>:
>>
>>> On 4/17/2017 3:11 AM, Marko Rauhamaa wrote:
>>>> Here's statistics from a medium-sized project of mine:
>>>>
>>>>    while True:            34
>>>>    while <condition>:     39
>>>>    for ... in ...:       158
>>>
>>> As I posted previously, the ratio of for-loops in the stdlib is about 7
>>> to 1.
>>
>> What I notice in my numbers is that about one half of my while loops are
>> "while True", and about a third of my loops are while loops.
>
> I fond the proportion on while True: loops surprising.  Is there
> something about Python that encourages that kind of loop?
>

A few things:

(1) Python doesn't have the equivalent of C's comma operator, and no 
assignment in expressions. So if a condition relies on such set-up code, 
it can't do this:

    while (c=nextc())!=0:

But has to do this or use extra logic:

    while 1:
       c=nextc()
       if c==0: break

(2) There are exceptions ('raise') as an extra means of breaking out of 
such loops (as well as return, break, and exit()

(3) There's 'yield' too, as I've just seen this example:

     while True:
        yield []

So there are more excuses to make use of it. Plus Python programmers may 
be more averse to using convoluted logic just to avoid a 'break' in the 
middle of a loop.


-- 
bartc



More information about the Python-list mailing list