Looping [was Re: Python and the need for speed]
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:
But has to do this or use extra logic:
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:
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.
More information about the Python-list