[Python-ideas] If branch merging
Chris Angelico
rosuav at gmail.com
Sun Jun 7 14:20:54 CEST 2015
On Sun, Jun 7, 2015 at 8:20 PM, s.krah <stefan at bytereef.org> wrote:
> Steven D'Aprano <steve at pearwood.info> wrote:
>
> On Sat, Jun 06, 2015 at 11:40:55PM -0400, random832 at fastmail.us wrote:
>>> Well you could always go with if aisb = a == b.
>
>> No, that is a terrible design and a source of many bugs in languages
>> that allow it.
>
>> if a = expr: ...
>
>> Oops, I meant to compare a == expr, instead I assigned the result of the
>> expression to a.
>
> In C I've mistyped this perhaps twice, in which case you get a compiler
> warning.
>
> It's a complete non-issue (and the construct *is* very handy).
That's as may be, but Steven's still correct that the Pythonic way to
do it would be with "as". In C, assignment is an expression ("=" is an
operator that mutates its LHS and yields a value), but in Python, it
simply isn't, and making it possible to do assignment in an 'if'
condition would be a big change.
with expr as name:
except expr as name:
if expr as name:
Three parallel ways to do something and capture it. It makes
reasonable sense, if someone can come up with a really compelling
use-case. Personally, I'd be more inclined to seek the same thing for
a while loop:
while get_next_value() as value:
# equivalent to
while True:
value = get_next_value()
if not value: break
as that's a somewhat more common idiom; but neither is hugely common.
ChrisA
More information about the Python-ideas
mailing list