<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Thu, Jul 5, 2018 at 8:28 PM 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">[Alexander Belopolsky]</div><div dir="ltr">> ...<br>>  I also think that the dreadfulness of mistyping = where == is expected<br>>  is exaggerated.<br><br>There are a number of core devs who would be rabidly opposed to allowing that confusion in Python, due to still-remembered real-life nightmares in C.  For example, me ;-)  It only takes one wasted day of debugging that typo in a time-critical project to sour you on it for life, and several of us run out of fingers counting the number of days it actually did cost over our C careers.<br></div></div></div></blockquote><div><br></div><div>I still do quite a bit of C programming and I have exactly the opposite experience given modern environments: why is gcc/clang/vs complaining about if (x=a) - I know what I am doing!  No, I don't want to put two pairs of (..) around condition - one is one too many!</div><div><br></div><div> </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>Alas, many people new to Python put parens around _all_ `if` and `while` conditions, due to habit carried over from other languages (common as newbies on, e.g., StackOverflow).  They're the most vulnerable.  Nobody in their right mind even suspects that putting parens around an entire expression could have semantic significance.<br><br>    a = 1 + 2  # OK, adds 1 and 2</div><div>    a = (1 + 2) # but who could possibly guess what this means? ;-)<br><br></div><div>But I expect the idea was DOA for the first reason above.</div></div></div></blockquote><div><br></div><div>Not that unlike Yuri, I don't think the language should require (..) around assignment expressions.</div><div><br></div><div>Seriously, ':=' looks like a reluctantly introduced kludge to allow assignment in expressions.  We agree that it is sometimes useful to have, but we will make the feature really hard to use or discover.  What happened to the "consenting adults" philosophy?  Do we want to protect users who cannot tell = from == so much that  we are willing to cause Python to be the first language with two non-interchangeable assignment operators?</div><div><br></div></div></div>