else on the same line - howto
Diez B. Roggisch
deets_noospaam at web.de
Wed Oct 15 10:17:27 EDT 2003
> Since Python lacks conditional expression
>
> like
>
> k+= (dy >= 0 ? 1 : -1)
You can do it - however, it has some implications:
k += [1,-1][dy < 0]
or
k += [-1,1][dy >= 0]
However, keep in mind that this expression is strictly evaluated. That means
that both parts of the list are evaluated _before_ one is selected using
the boolean index op. That can cause trouble:
k += [expensiveOp1(arg1), expensiveOp2(arg2)][dy >= 0]
will always evaluate both expensiveOps
You can overcome that by lazy evaluation using a lambda:
k += [lambda: expensiveOp1(arg1), lambda: expensiveOp2(arg2)][dy >= 0]()
But this is faar from beeing readable, so in the end I have to agree to the
other posters: Don't do it!
Regards,
Diez
More information about the Python-list
mailing list