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 -- http://mail.python.org/mailman/listinfo/python-list