On 2/14/2014 4:06 PM, Chris Angelico wrote:
On Sat, Feb 15, 2014 at 7:48 AM, Steven D'Aprano <steve@pearwood.info> wrote:
On Fri, Feb 14, 2014 at 05:18:55AM -0500, Terry Reedy wrote:
I do not really understand the fear of indents that would cause one to repeat calculations rather than write the actual logic.
In C, where (syntactically insignificant) 8-space tabs are standard, I can, but not in Python where 4 spaces are standard and one can use less.
x = expensive_computation_0(): if x: # Do something with x... else: x = expensive_computation_1() if x: # Do something with x...
That's really not very nice looking.
It is an accurate representation of the logic, so you are saying that the logic is not nice looking. Ok.
It's okay with one or two levels, three at the most,
As I said, but you clipped.
More to the point, excessive _and inappropriate_ indentation. An if/elif/elif/elif/else chain puts all the conditions at the same level, and all the bodies at the same level (one further in than the conditions). The intention is that they're all peers,
But they are *not* peers.
not that they're nested inside each other.
But logically, they are.
Since Python, unlike C, doesn't let you assign inside a condition
The C construction with a side-effect expression as a condition is a bit of a contortion. Its main virtue is avoidance of indents. -- Terry Jan Reedy