Let me be slightly contrarian. :-) On Wed, Jul 4, 2018 at 9:12 PM Chris Angelico <ros...@gmail.com> wrote:
> Definitely against augmentation, for several reasons: > > 1) Spelling - should it be :+= or +:= ? > That one's easy. As Nick's (withdrawn) PEP 577 shows it should be simply `+=`. > 2) Is the result of the expression the modified value or the original? > Someone (sadly I forget who) showed, convincingly (to me anyways :-) that it should return whatever the `__iadd__` method returns, or (if there isn't one) the result of `a = a + b`. > 3) The use-cases simply aren't as strong. > Here I agree. > Supporting arbitrary assignment targets (rather than just a simple > name) could be useful, but can be deferred to a future enhancement > without impacting the simpler version. I would divide this up into two > subgroups: > > * Multiple assignment (sequence unpacking) > Tim Peters showed in his response this isn't all that helpful. I also think we shouldn't open the can of worms about priorities this presents, e.g. is (a, b := foo()) equivalent to ((a, b) := foo()) or is it like (a, (b := foo()))? > * Assignment to non-simple names eg "x[1] := expr" > > Assigning directly to an item or attribute could in theory be > immensely valuable. So could multiple assignment, though I suspect to > a lesser extent. But tell me: Without looking it up, do you know which > of these constructs support non-simple-name assignment and which > don't? > > [x[1] for x[1] in seq] > with ctx() as x[1]: > except Exception as x[1]: > from spam import ham as x[1] > > In the enormous majority of cases, every one of these constructs is > going to be used with a simple name, even though some (I won't say how > many) do permit you to do what I did here. If Python 3.8 ships with > assignment expressions restricted to simple names, we can discuss how > valuable the other forms of assignment target would be, and then > figure out what to do about the ambiguities - for instance, is "x, y > := expr" going to be equivalent to "x, (y := expr)" or "(x, y) := > expr" ? As it is, we neatly dodge that. > Again, the biggest argument against this is that there just aren't enough use cases. -- --Guido van Rossum (python.org/~guido)
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com