On Wed, Apr 25, 2018 at 1:03 AM, Yury Selivanov <yselivanov...@gmail.com> wrote: > On Tue, Apr 24, 2018 at 10:56 AM, Chris Angelico <ros...@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 :)
Heh, yes it is. But my point is that the parens are not creating a weird situation here. They're just showcasing a distinction: one of these is a statement, the other an expression. Which is the entire point of the different operator - one is a syntactic feature of a statement that creates one or more name bindings, the other is a binary operator which results in a name binding as well as a value. ChrisA _______________________________________________ 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