[Python-Dev] assignment expressions: an alternative proposal
Yury Selivanov
yselivanov.ml at gmail.com
Tue Apr 24 11:03:35 EDT 2018
More information about the Python-Dev mailing list
Tue Apr 24 11:03:35 EDT 2018
- Previous message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Next message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tue, Apr 24, 2018 at 10:56 AM, Chris Angelico <rosuav at gmail.com> wrote: [..] >> A lot of other questions arise though. PEP 572 proposes: >> >> a = 1 # assignment >> a := 1 # also assignment >> (a := 1) # also assignment >> (a = 1) # error, why? > > Your third example is just the same as the second, with parentheses > around it. In most of Python, parentheses (if legal) have no effect > other than grouping; "a + b * c" is the same thing as "(a + b) * c", > just done in the other order. The last one is a clear demonstration > that "=" is a statement, not an expression. Are people confused by > this sort of thing: > > if x > 1: > print("x is more than 1") > (if x > 1:) > print("SyntaxError") This is a very far-fetched example :) My point was that when you see lots of '=' and ':=' used at the statement level, one might try to write "if x = 1" instead of "if x := 1" -- boom, we have an unexpected SyntaxError for some users. In my opinion adding *any* assignment expression syntax to Python *will* create this sort of issues. PEP 572 isn't free of them, my proposal isn't free of them. My proposal doesn't add a new ':=' operator at the cost of slightly complicating rules around '='. PEP 572 avoids complicating '=', but adds an entirely new form of assignment. Yury
- Previous message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Next message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list