[Chris]
> ...
> So I don't see much value in a "->" operator, except for the
> mere fact that it's different (and thus won't conflict in
> except/with); and the bulk of name bindings in Python put
> the name first.
It does give a natural solution to one of the problematic examples,
because as a very-low-precedence operator it would suck up "everything
to the left" instead of "everything to the right" as "the expression
part"::
if f(x) -> a is not None:
can't be misunderstood, but:
if a := f(x) is not None:
is routinely misunderstood.
On the other hand, if assignment expressions are expanded to support
all the forms of unpacking syntax (as Guido appears to favor), then
other cases arise:
if f() -> a, b > (3, 6):
Is that:
if ((f() -> a), b) > (3, 6):
or
if (f() -> (a, b)) > (3, 6):
?
Which is an argument in favor of ":=" to me: an assignment statement
can be pretty complex, and if an assignment operator can become just
as complex then it's best if it looks and works (as much as possible}
exactly like an assignment statement.
If someone writes
if a, b := f() > (3, 6):
it's easy to explain why that's broken by referring to the assignment statement
a, b = f() > (3, 6)
"You're trying to unpack a Boolean into a 2-tuple - add parens to
express what you really want."
_______________________________________________
Python-ideas mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/