PEP-308 a "simplicity-first" alternative
Bengt Richter
bokr at oz.net
Wed Feb 12 18:11:15 EST 2003
On Wed, 12 Feb 2003 17:41:53 GMT, Tim Hochberg <tim.hochberg at ieee.org> wrote:
[...]
>in ternary operations. So if nothing comes of the current discussion,
>the warning against "a and b or c" in the FAQ can be strengthened and
>people can be pointed to either:
>
># Clear, extensible, but verbose
>result = {True: true_value, False : false_value}[cond]
># More concise
>result = [true_value, false_value][not cond]
>
>In my own experience the common "[false_value, true_value][cond]" is
>error prone because the ordering of the values is opposite what I'd
>expect, so I wouldn't recomend that.
Not to mention that 'not' guarantees 0 or 1.
>
>When short circuiting is required, I have no problem telling people to
>suck it up and use a a real if/else statement since this case is
>relatively rare. To quote M. Hudson quoting Tim Peters "learn to love
>the return key".
I think I have an answer:
result = cond and {true_value} or false_value
where {x} means x is treated as True in logical expression context, but its
value is preserved for the expression value. An optional variant is
result = cond and {true_value} or {false_value}
Regards,
Bengt Richter
More information about the Python-list
mailing list