semicolon at end of python's statements

Antoon Pardon antoon.pardon at rece.vub.ac.be
Mon Sep 2 04:29:05 EDT 2013


Op 02-09-13 01:30, MRAB schreef:
> On 01/09/2013 20:58, Antoon Pardon wrote:
>> Op 31-08-13 02:09, Steven D'Aprano schreef:
>>> On Fri, 30 Aug 2013 11:32:17 +0100, Fábio Santos wrote:
>>>
>>
>>>
>>> We really are spoiled for choice here. We can write any of these:
>>>
>>> # Option 1
>>> for spam in sequence:
>>>      if predicate(spam):
>>>          process(spam)
>>>
>>
>>>
>>> Adding a fourth option:
>>>
>>> for spam in sequence if predicate(spam):
>>>      process(spam)
>>>
>>> saves absolutely nothing except a line and an indent level, neither of
>>> which are in short supply, and gains nothing in readability over
>>> Option 1.
>>
>> So what is the big difference between this situation and the following:
>>
>> | else:
>> |     if condition:
>> |         whatever
>>
>> which in python we can write:
>>
>> | elif condition:
>> |     whatever
>>
>>
>> So either is seems this was a design mistake or a line and an indent
>> level can be important enough to allow a combination of controls.
>>
> 'elif' is for cascading ifs:
> 
> if ...:
>    ...
> elif ...:
>    ...
> elif ...:
>    ...
> elif ...:
>    ...
> else:
>    ...
> 
> Without 'elif' you would be forced to write:
> 
> if ...:
>    ...
> else:
>     if ...:
>        ...
>     else:
>         if ...:
>            ...
>         else:
>             if ...:
>                ...
>             else:
>                ...
> 
> On the other hand, for...if is much less of a problem.

So what is the problem with being forced to write it like this? We have
just learned that there is no short supply of indent levels, so why
should this bother us?

The only reason this should bother us, is if we think that indent levels
are a somewhat limited commodity and/or the way we view the process
structure is better illustrated written the first way. But if we think
those arguments carry some weight, there is no reason to only consider
them in the case of an else if combination. Why should we be more
concerned with cascading ifs than with cascading controls in general?

Not that I expect this to change, but it illustrates why for a number
of people the forced indentation can be an annoyance. All these
discussions about combining controls would have been unnecessary
without the enforced strict indentation. In that case we wouldn't have
needed elif because we could have just written "else: if" or "else if"
we wouldn't now be discussing the pro and cons of loop comprehension
because we could have just layed out the code so that it illustrated
our intention of a loop comprehension.

-- 
Antoon Pardon



More information about the Python-list mailing list