<br><br><div class="gmail_quote"><div dir="ltr">On Tue, Jul 3, 2018, 22:27 Tim Peters, <<a href="mailto:tim.peters@gmail.com">tim.peters@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">[INADA Naoki]</div><font face="arial, helvetica, sans-serif">> ...<br></font></div></div><div dir="ltr"><div class="gmail_quote"><span style="font-family:arial,helvetica,sans-serif">> On the other hand, I understand PEP 572 allows clever code<br>> simplifies tedious c</span><span style="font-family:arial,helvetica,sans-serif">ode.  It may increase readability of non-dirty code.  </span><br></div></div><div dir="ltr"><div class="gmail_quote"><div dir="ltr"><div class="gmail_quote"><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif">The latter is the entire intent ,of course.  We can't force people to write readable code, but I don't understand the widespread assumption that other programmers are our enemies who have to be preemptively disarmed ;-)</div><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif">Use code review to enforce readable code.  If you want a coding standard here, use mine:  "if using an assignment expression isn't obviously better (at least a little so), DON'T USE IT".  That's the same standard I use for lots of things (e.g., is such-&-such better as a listcomp or as nested loops?).  It only requires that you have excellent taste in what "better" means ;-)<br></div></div></div></div></div></blockquote></div><div><br></div><div>I think this is a very key point that the "this is bad" crowd is overlooking. Even if this syntax turns out to not be that useful, abusing the walrus operator can be fixed with a comment of "hard to follow; please simplify" without teaching any new concepts or idioms (and which happens with constructs most of us would agree are useful and well-designed). IOW when I'm doing code reviews for folks this is not going to be what I stress about or spill the most characters trying to explain how to fix.</div><div><br></div><div><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr"><div class="gmail_quote"><div style="font-family:arial,helvetica,sans-serif"><br>As I noted in the PEP's Appendix A, I refuse to even write code like<br><br>

<pre class="m_-2358420549958749227gmail-literal-block" style="box-sizing:border-box;margin:0px 0px 1.3125em;padding:0.5em;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:1.875;font-family:Consolas,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;white-space:pre-wrap;word-wrap:break-word;background-image:inherit;background-position:inherit;background-size:inherit;background-repeat:inherit;background-origin:inherit;background-clip:inherit;background-color:rgb(249,249,249);color:rgb(68,68,68);text-decoration-style:initial;text-decoration-color:initial"><font size="2">i = j = count = nerrors = 0</font></pre><font size="2">

b</font>ecause it squashes conceptually distinct things into a single statement .  I'll always write that as<br><br>

<pre class="m_-2358420549958749227gmail-literal-block" style="box-sizing:border-box;margin:0px 0px 1.3125em;padding:0.5em;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:1.875;font-family:Consolas,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;white-space:pre-wrap;word-wrap:break-word;background-image:inherit;background-position:inherit;background-size:inherit;background-repeat:inherit;background-origin:inherit;background-clip:inherit;background-color:rgb(249,249,249);color:rgb(68,68,68);text-decoration-style:initial;text-decoration-color:initial"><font size="2">i = j = 0
count = 0
nerrors = 0</font></pre>

instead - or even in 4 lines if `i` and `j` aren't conceptually related.<br><br>That's how annoyingly pedantic I can be ;-)   Yet after staring at lots of code, starting from a neutral position (why have an opinion about anything before examination?), I became a True Believer.<br><br>I really don't know what Guido likes best about this, but for me it's the large number of objectively small wins in `if` and `while` contexts.   They add up.  That conclusion surprised me.  That there are occasionally bigger wins to be had is pure gravy.</div></div></div></div></div></blockquote></div><div><br></div><div>Another point is we live in a dictatorship by choice, and yet some people seem very upset our dictator dictated in the end. 😉 Rather than being upset that Guido chose not to heed some advice that someone personally thought was crucial, I'm going to rely on the point that all the salient points were made (albeit sometimes in sensationalist terms in what seems like a higher-than-normal frequency), and trust Guido's design taste which I have appreciated for my 18 years as a Python user.</div><div><br></div><div>-Brett</div><div><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr"><div class="gmail_quote"><div style="font-family:arial,helvetica,sans-serif"><br>But in no case did I count "allows greater cleverness" as a win.  The Appendix contains a few examples of "bad" uses too, where cleverness in pursuit of brevity harms clarity.  In fact, to this day, I believe those examples derived from abusing assignment expressions in real-life code are more horrifying than any of the examples anyone else _contrived_ to "prove" how bad the feature is.<br><br>I apparently have more faith that people will use the feature as intended.  Not all people, just most.  The ones who don't can be beaten into compliance, same as with any other abused feature ;-)<br><br></div></div></div>
</div></div>
_______________________________________________<br>
Python-Dev mailing list<br>
<a href="mailto:Python-Dev@python.org" target="_blank">Python-Dev@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-dev" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-dev</a><br>
Unsubscribe: <a href="https://mail.python.org/mailman/options/python-dev/brett%40python.org" rel="noreferrer" target="_blank">https://mail.python.org/mailman/options/python-dev/brett%40python.org</a><br>
</blockquote></div>