[Python-ideas] if-syntax for regular for-loops

Arnaud Delobelle arnodel at googlemail.com
Fri Oct 10 21:51:37 CEST 2008


On 4 Oct 2008, at 00:42, Vitor Bosshard wrote:

>
>> On Fri, Oct 3, 2008 at 12:33 PM, Andreas Nilsson wrote:
>>> Thanks for the pointer!
>>> I don't buy the argument that newlines automagically improves  
>>> readability
>>> though. You also get increased nesting suggesting something  
>>> interesting is
>>> happening where it isn't and that hurts readability.
>>> And as Vitor said, all other constructions of the form 'for i in  
>>> items' can
>>> have if-conditions attached to them, it's really not that far- 
>>> fetched to
>>> assume that the loop behaves the same way. Consistency good,  
>>> surprises bad.
>>
>> Yeah, I know what you mean, and I kind of liked the idea of adding  
>> the
>> if statement to the for loop (for consistency, if nothing else), but
>> it's been discussed before, and plenty of people have made the same
>> argument.  Probably not worth it.
>
> Besides consistency I think the one major benefit to for..if
> loops is that often you don't just save a line, but also an  
> indentation
> level (whenever you use the if clause solely as a filter), which
> actually increases readability, specially when whatever you do within
> the loop is
> relatively long, with its own indentations.
>
>
> The syntax just feels natural. For example:
>
> for i in somelist if i.pending:
>    <do stuff>
>
>
> I really don't see any disadvantage here.

There is also a problem with parsing as:

* the following is correct:

     for i in L1 if cond else L2:
        do_something()

* Python's grammar is LL(1)

-- 
Arnaud




More information about the Python-ideas mailing list