<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Thu, May 17, 2018 at 9:35 PM Steven D'Aprano <<a href="mailto:steve@pearwood.info">steve@pearwood.info</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, May 17, 2018 at 11:41:33AM -0700, Neil Girdhar wrote:<br>
> My preference is to do nothing.  If you end up making "where" a keyword in <br>
> Python 3.8, numpy will probably:<br>
<br>
This is only incidently about "where". I'm hoping that the "where" (or <br>
"given") proposal is rejected. It is so verbose and redundantly <br>
repetitious in the common case that rather than being an improvement <br>
over the status quo, it is worse. But that's by-the-by.<br>
<br>
<br>
> * rename their where function to "where_" in 3.8<br>
> * add a where_ alias in Python < 3.8.<br>
> <br>
> And then people will have to fix their code in 3.8 anyway.  Only instead of <br>
> learning a new verbatim syntax, they will just add the familiar underscore.<br>
<br>
You should be thinking forward two or three versions from now, when <br>
\name is the familiar syntax and name_ looks like you started to write <br>
an identifier using the underscore_words_convention but got distracted <br>
halfway through.<br>
<br>
Remember that (if approved) verbatim names will not be "that new syntax" <br>
for long. We don't still talk about "that new fangled list comprehension <br>
syntax" or "that new yield keyword". That was the problem with the "old <br>
versus new style classes" terminology: at the point that "new-style <br>
classes" had been around for six releases, approaching a decade, they <br>
weren't new any more.<br>
<br></blockquote><div>I can get behind the benefit of main benefit of backslash, which is keeping code working with old libraries.  </div><div><br></div><div>However, the difference between the backslash syntax and comprehensions and generator functions is that comprehensions and generator functions make the language more expressive.  The backslash is no more expressive than trailing underscore.  It's no more succinct, and no more clear.  Adding it to the language constitutes more that the user needs to learn, which makes Python slightly less accessible.</div><div><br></div><div>I don't like multiple ways of doing the same thing.  There is already probably billions of lines of code that use trailing underscore to avoid collisions.  If the backslash syntax is added, then there will be a natural push towards the "right way" to avoid collisions.   If that's backslashes, then projects are typically going to have code written with backslashes and code written with underscore.  When you go access a variable named "where", you'll wonder: was it called "\where" or "where_"?<br></div><div><br></div><div>Maybe the "\where" is pretty enough that it's worth it like you say.  Maybe a function like:</div><div><br></div><div>def f(\in=0, out=1):</div><div><br></div><div>is prettier than</div><div><br></div><div>def f(in_=0, out=1):</div><div><br></div><div>but I'm already so used the current way of doing things, my aesthetic is that it's not worth the variability.</div><div><br></div><div>For that reason, I'd like to make a more modest proposal to *only* add a verbatim versions of keywords as necessary, e.g., "\where" or "\given".  That way, there will be no temptation to use that syntax in any other place.  If a new version of Python comes out with a new keyword, say "abc", then all of the old Python versions can get a minor revision that knows about "\abc".  This would ensure that the backslash syntax is only used to avoid collisions with new keywords.</div><div><br></div><div>When 3.7 hits end-of-life, the "\given" (or whatever) can be deprecated.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
> One thing that should ideally be done is to improve the SyntaxError <br>
> processing to special case use of keywords in places that identifiers are <br>
> used. <br>
<br>
This is worth doing regardless of whether or not we get verbatim strings <br>
or some other alternative. You ought to raise it on the bug tracker.<br>
<br>
<br>
<br>
-- <br>
Steve<br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/codeofconduct/</a><br>
<br>
-- <br>
<br>
--- <br>
You received this message because you are subscribed to a topic in the Google Groups "python-ideas" group.<br>
To unsubscribe from this topic, visit <a href="https://groups.google.com/d/topic/python-ideas/r1kFC8mYEKk/unsubscribe" rel="noreferrer" target="_blank">https://groups.google.com/d/topic/python-ideas/r1kFC8mYEKk/unsubscribe</a>.<br>
To unsubscribe from this group and all its topics, send an email to <a href="mailto:python-ideas%2Bunsubscribe@googlegroups.com" target="_blank">python-ideas+unsubscribe@googlegroups.com</a>.<br>
For more options, visit <a href="https://groups.google.com/d/optout" rel="noreferrer" target="_blank">https://groups.google.com/d/optout</a>.<br>
</blockquote></div></div>