<div dir="ltr">
[Guido]<br><div>2018-04-15 20:19 GMT+03:00 Guido van Rossum <span dir="ltr"><<a href="mailto:guido@python.org" target="_blank">guido@python.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Apr 15, 2018 at 4:05 AM, Kirill Balunov <span dir="ltr"><<a href="mailto:kirillbalunov@gmail.com" target="_blank">kirillbalunov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">[...]
 For me personally, `: =` looks and feels just like normal assignment 
statement which can be used interchangeable but in many more places in 
the code. And if the main goal of the PEP was to offer this `assignment 
expression` as a future replacement for `assignment statement` the `:=` 
syntax form would be the very reasonable proposal (of course in this 
case there will be a lot more other questions). </div></blockquote><div><br>I
 haven't kept up with what's in the PEP (or much of this thread), but 
this is the key reason I strongly prefer := as inline assignment 
operator.<br> </div><span class="gmail-"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">But
 somehow this PEP does not mean it! And with the current rationale of 
this PEP it's a huge CON for me that `=` and `:=` feel and look the 
same.</div></blockquote><div><br></div></span><div>Then maybe the PEP needs to be updated.<span class="gmail-HOEnZb"><font color="#888888"><br></font></span></div></div></div></div></blockquote>

<br><div class="gmail_extra">[Chris]<br></div><div class="gmail_extra"><div class="gmail_quote">2018-04-15 23:28 GMT+03:00 Chris Angelico <span dir="ltr"><<a href="mailto:rosuav@gmail.com" target="_blank">rosuav@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On Mon, Apr 16, 2018 at 3:19 AM, Guido van Rossum <<a href="mailto:guido@python.org">guido@python.org</a>> wrote:<br>
> On Sun, Apr 15, 2018 at 4:05 AM, Kirill Balunov <<a href="mailto:kirillbalunov@gmail.com">kirillbalunov@gmail.com</a>><br>
> wrote:<br>
</span><span class="gmail-">>> But somehow this PEP does not mean it! And with the current rationale of<br>
>> this PEP it's a huge CON for me that `=` and `:=` feel and look the same.<br>
><br>
> Then maybe the PEP needs to be updated.<br>
<br>
</span>I can never be sure what people are reading when they say "current"<br>
with PEPs like this. The text gets updated fairly frequently. As of<br>
time of posting, here's the rationale:<br>
<br>
-----<br>
Naming the result of an expression is an important part of programming,<br>
allowing a descriptive name to be used in place of a longer expression,<br>
and permitting reuse.  Currently, this feature is available only in<br>
statement form, making it unavailable in list comprehensions and other<br>
expression contexts.  Merely introducing a way to assign as an expression<br>
would create bizarre edge cases around comprehensions, though, and to avoid<br>
the worst of the confusions, we change the definition of comprehensions,<br>
causing some edge cases to be interpreted differently, but maintaining the<br>
existing behaviour in the majority of situations.<br>
-----<br>
<br>
Kirill, is this what you read, and if so, how does that make ':=' a<br>
negative? The rationale says "hey, see this really good thing you can<br>
do as a statement? Let's do it as an expression too", so the parallel<br>
should be a good thing.<br>
<br></blockquote></div><br>
<span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">Yes, this is what I read</span></span>. 
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">I understand why you have such a question so I'll try to explain my position in more detail</span></span>. 
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">Also I want to add that I did not fully understand about which part Guido said - "Then maybe the PEP needs to be updated." 
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">Therefore, I allow myself to assume that he had in mind the following</span></span>

- "The assignment expression should be semantically equivalent to assignment statement and <span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"> perceived as a theoretically possible future replacement</span></span> (usage) of assignment statement." 
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">If this is really the case and I understood correctly - I will repeat that for me the current state of the PEP does not fully imply this. 
<span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><br><br>1. 
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">Part - </span></span></span></span></span></span></span></span>"<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">Then maybe the PEP needs to be updated." <br><br>
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">If you really see it as a theoretical substitute for</span></span> assignment statement in future Python. I will update the rationale with 
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">maybe</span></span></span></span></span></span></span></span>

 the following (<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">I immediately warn you that I do not pretend to have a good English style</span></span>):<br><br>-----<br>Naming the result of an expression is an important part of programming,<br>allowing a descriptive name to be used in place of a longer expression,<br>and permitting reuse.  Currently, in Python this feature is available only in<br>statement form, making it unavailable in list comprehensions and other<br>expression contexts.  This restriction, of making it as a statement, was done<br>primarily to avoid the usual trap of `=` vs `==` in C/C++ language.  Despite<br>this, it is evident that the ability to assign a name within an expression<br>is convenient, allows to avoid redundant recalculations of the same expression<br>and is a familiar feature from other programming languages.  Thus the main aim<br>of this PEP is to provide a syntax which will allow to assign as an expression<br>and be semantically and visually interchangeable with the assignment statement.<br>...<br>-----<br><br></span></span></span></span></span></span></span></span></div><div class="gmail_extra"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">In this case, I do not see any reason to discuss the alternative syntax</span></span>

- there is really only one choice `:=`. 
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">And then for me the list of open questions would look</span></span> like (for example):<br></span></span></span></span></span></span></span></span><div style="margin-left:40px"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">1. 
<span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">...Is it worth accepting</span></span>?<br></span></span></span></span></span></span></span></span></div><div style="margin-left:40px"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">2. ...<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">Should the other forms (+=, *=, basically all) that can not be confused with `==` be changed to expressions?<br>...</span></span> </span></span></span></span></span></span></span></span><br></div><div style="margin-left:40px"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"></span></span></span></span></span></span></span></span></div><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><br><br>2.  Part - <span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">How do I understand the current state of the PEP</span></span> <br></span></span></span></span></span></span></span></span></div><div class="gmail_extra"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><br></span></span></span></span></span></span></div><div class="gmail_extra"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">
<span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">I perceive the current rationale as "hey, see this really good thing you can do as a statement? Let's do it as an expression too". 
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">Which for me means opportunities to discuss the following questions:<br></span></span></span></span></span></span></span></span></span></span><div style="margin-left:40px"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">1. 
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">Should assignment expression be viewed as a replacement of an assignment statement or as a complement to it?<br>2. 
<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">Which spelling should have an assignment expression? (
<span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">depends on the previous</span></span>

)<br>3.  Does it make sense to make it valid only in certain context or in any?<br></span></span></span></span></span></span></span></span></span></span></span></span></span></span></div><div style="margin-left:40px"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-">... and many others ...</span></span> </span></span></span></span></span></span></span></span></span></span></span></span><br></div><div style="margin-left:40px"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"></span></span></span></span></span></span></div></div><div class="gmail_extra"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><br>
<span id="gmail-result_box" class="gmail-" lang="en"><span>You are the author of this PEP.</span> <span class="gmail-">Therefore,
 you choose how you take it, how you feel it and what kind of feedback you are willing to
 accept, and in any case I will respect your choice :)</span></span>

<br><br></span></span></span></span></span></span></div><div class="gmail_extra"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">with kind regards,<br></span></span></span></span></span></span></div><div class="gmail_extra"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">-gdg </span></span></span></span></span></span><br></div></div></div>