We're trying to make the PEP's scope *smaller*, not larger. Let's take
changes to assignment off the table. We're fully aware of the resemblance
between `a, b = value` and `case a, b: ...` and we're making them behave as
similar as is reasonable.

On Wed, Jul 1, 2020 at 4:29 PM Daniel Moisset <dfmois...@gmail.com> wrote:

> If I was to do this in Python, rather than the Rust way of forbidding
> refutable patterns, I would put as a rule that the target must have at
> least one variable to bind* . It makes sense in the context that the goals
> of an assignment are the bindings it does, and the ValueError is an
> accident that the binding may be impossible sometimes. It would fit better
> with existing destructuring, and the python philosophy of trusting the
> developer and protecting the semantics with a runtime check.
>
> * only allowing the historical () I mentioned earlier in the thread for
> compatibility with weird programs that no one ever wrote
>
> On Wed, 1 Jul 2020 at 23:24, Devin Jeanpierre <jeanpierr...@gmail.com>
> wrote:
>
>> On Wed, Jul 1, 2020 at 11:31 AM Elliott Chen <elliottchen2...@gmail.com>
>> wrote:
>>
>>> I guess it might work in a separate PEP, but I'm also a little worried
>>> because the current PEP would make that impossible with its subtle
>>> incompatibilities with the existing unpacking syntax. Or even more
>>> inconsistent, if the assignment target syntax is extended to become similar
>>> to the match syntax but still slightly different for backwards
>>> compatibility.
>>>
>>
>> In my view 1 = x is a sneaky degenerate case, and what we should really
>> be asking is if it's cool to be able to do, say, (x, 0) = a compared with
>> "x, y = a; if y != 0: raise ValueError".
>>
>> BTW, +100% to the idea that match should extend assignment semantics
>> (e.g. to allow multiple clauses). The totally new match semantics have come
>> up a lot when I discussed this PEP with my friends at work. Even if we get
>> awkward corner cases out of unifying the two, the simplicity of only having
>> one notion of lvalue, instead of two lvalue-like things, is IMO an
>> overriding benefit. This is also more or less how match and assignment tend
>> to work in the languages that have pattern matching, .
>>
>> If we are repulsed by "1 = x" and (x, 0) = y, one solution is to do what
>> Rust did and forbid refutable patterns on the left-hand side of an
>> assignment, but allow them on the left hand side of a match case. (With the
>> historically-minded exception of list and tuple literals). This still makes
>> match an extension of assignment (it's assignment + multiple cases +
>> refutable patterns) and gives us the simplicity benefits, while forbidding
>> "1 = x".
>>
>> -- Devin
>> _______________________________________________
>> Python-Dev mailing list -- python-dev@python.org
>> To unsubscribe send an email to python-dev-le...@python.org
>> https://mail.python.org/mailman3/lists/python-dev.python.org/
>> Message archived at
>> https://mail.python.org/archives/list/python-dev@python.org/message/IM6NZJSZHID46K3QYGG4GUJ5D6GMMX4P/
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
> _______________________________________________
> Python-Dev mailing list -- python-dev@python.org
> To unsubscribe send an email to python-dev-le...@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-dev@python.org/message/UK4BB72KOLGSUUYYJC5CN4PSMEP36XWV/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


-- 
--Guido van Rossum (python.org/~guido)
*Pronouns: he/him **(why is my pronoun here?)*
<http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/FD6PC3JTHDQAYQBBVLYLMPCZMGTHWTWW/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to