Before we all get a little too excited here, I think that allowing
```
1 = x
```
as a sneaky way of writing
```
assert x == 1
```
would be a terrible mistake.

We already have a static way to assert that something is a string:
```
self.name: str = value
```
I don't think that we'll need another way to express the same thing at
runtime, so I'm not excited about
```
self.name = str() = value
```

As to allowing object destructuring syntax like
```
Point(x, y) = p
```
that definitely has merit, but it is a complex subject that should be a
separate PEP.

On Wed, Jul 1, 2020 at 7:19 AM Nick Coghlan <ncogh...@gmail.com> wrote:

> On Thu, 2 Jul 2020 at 00:04, Elliott Chen <elliottchen2...@gmail.com>
> wrote:
> >
> > I saw in the PEP that "Allow more flexible assignment targets instead"
> was rejected, but I actually think it's a good idea. The current PEP means
> there will be two different, subtly incompatible ways to destructure
> objects (match statement and iterable unpacking). The reasoning given was
> that most cases involve an if-statement, but there's no reason we can't
> have both flexible assignment targets and a match statement. I think
> unifying the concepts will make the language more consistent and easy to
> learn.
> >
> > I also think destructuring an object with only one possible pattern can
> be very useful, without the boilerplate to set up an entire match suite and
> manually raise an exception. This will make the variable assignment
> statement much more powerful. I don't see a good reason to arbitrarily
> restrict variable assignment to only allow sequence patterns. This might
> not be a good idea, but it can even potentially be used as an assert
> statement, like this:
> >
> > def __init__(self, version, name, point):
> >         self.version = 1 | 2 | 3 = type # assert that "version" is
> between 1 and 3
> >         self.name = str() = string # assert that "name" is the correct
> type
> >         Point(0, self.y) = point # assert that "point" is on the y-axis
> >
> > The constant value pattern would have to be changed to something else,
> like "@constant", and even though that's also rejected, I think the
> benefits outweigh the costs here. The special treatment of "_" would have
> to go too, but there's no reason it can't be used as a wildcard by
> convention anyway, similar to how it can already be used in for loops. I
> don't see any benefit in treating it specially. Or the question mark can be
> the wildcard instead.
>
> Exactly!
>
> The wildcard spelling idea I suggested in the other thread was that
> "?" could become a general constraint prefix used to introduce
> non-literal and non-keyword constraints.
>
> I was thinking purely in terms of destructuring and not in terms of
> data validation, but you're right that multiple assignments would
> allow for "multi-capture" (albeit with the usual caveats on iterable
> consumption).
>
> (I think match/case is fine as the spelling for the multi-target
> dispatch case, though)
>
> Cheers,
> Nick.
>
>
>
> --
> Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
> _______________________________________________
> 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/LOLDPPKHE6L75WW2FNEQHONNZK2LM6NI/
> 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/WQCHP4A23CF7HSZTOMJUEFNC2MJPRIST/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to