[Python-ideas] if expensive_computation() as x:
Terry Reedy
tjreedy at udel.edu
Fri Feb 14 11:18:55 CET 2014
On 2/13/2014 4:59 PM, Ram Rachum wrote:
> Hi everybody,
>
> Please excuse the recent torrent of crazy ideas :)
>
> I was reading code of the Shpaml project, trying to make a patch, while
> I saw code that looked inelegant to me. I considered how to improve it,
> but then saw I don't know how to.
>
> The code paraphrased is this:
>
> if expensive_computation_0():
> x = expensive_computation_0()
> # Do something with x...
> elif expensive_computation_1():
> x = expensive_computation_1()
> # Do something with x...
> elif expensive_computation_2():
> x = expensive_computation_2()
> # Do something with x...
I do not really understand the fear of indents that would cause one to
repeat calculations rather than write the actual logic.
x = expensive_computation_0():
if x:
# Do something with x...
else:
x = expensive_computation_1()
if x:
# Do something with x...
else:
x = expensive_computation_2()
# Do something with x...
If the code is already indented so much that 8 more spaces is a burden,
then temporarily use 1 space indents. If do_something is the same, I
would use 'or' as already posted. Python 'or' expressions are
flow-control expression, not just logic expresssion. If there are more
nested clauses, a separate function or "while 'fake loop': ... break" is
fine.
--
Terry Jan Reedy
More information about the Python-ideas
mailing list