Paul Sokolovsky <pfal...@users.sourceforge.net> added the comment:

Thanks.

I would like to put this ticket in the context of other grammar-related 
tickets/elaboration for the assignment operator:

https://bugs.python.org/issue42316 - allow foo[a:=1] instead of foo[(a:=1)]
https://bugs.python.org/issue42374 - allow (c := i for i in b) instead of ((c 
:= i) for i in b)
https://bugs.python.org/issue42381 - allow {i := 0 for i in b} instead of {(i 
:= 0) for i in b}

All of the above were implemented. Of course, allow parallel assignment, which 
was previously disabled, is somewhat a bigger change then allowing 
unparenthesized assignment usage. But from the grammar point of view, they are 
of the same nature (using walrus-aware term at right place). The initial patch 
I have on my hands is:
 
 named_expression[expr_ty]:
-    | a=NAME ':=' ~ b=expression { _Py_NamedExpr(CHECK(expr_ty, 
_PyPegen_set_expr_context(p, a, Store)), b, EXTRA) }
+    | a=star_targets ':=' ~ b=expression { _Py_NamedExpr(CHECK(expr_ty, 
_PyPegen_set_expr_context(p, a, Store)), b, EXTRA) }


And let's review the 'foo[(a := 1)]' case from more angles. C had assignment as 
expression from the very beginning, but in all fairness, I never saw "foo[a = 
1]" in my whole life (well, maybe in https://www.ioccc.org/ submissions). But 
we see that with Python, people are not too shy to use that. And they even 
submit issues like "hey, I don't want to write foo[(a := 1)], I want to write 
foo[a := 1] !" And they don't get replies like "you know, doing assignment in 
index would hamper readability/maintainability; and those extra parens are 
there exactly to hint you more about this fact". Instead, the case is getting 
acked and fixed.

So, under such circumstances, I don't think that writing "min((a, b) := (b, 
a))" should be considered "much worse" than "foo[a := 1]", and should be kept 
disallowed (as again, fix for both is of the same nature).

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue43143>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to