[Python-ideas] Verbatim names (allowing keywords as names)

Neil Girdhar mistersheik at gmail.com
Thu May 17 18:07:27 EDT 2018



On Thursday, May 17, 2018 at 5:40:05 PM UTC-4, Carl Smith wrote:
>
> > My preference is to do nothing.  If you end up making "where" a keyword 
> in Python 3.8, numpy will probably:
> > * rename their where function to "where_" in 3.8
> > * add a where_ alias in Python < 3.8.
>
> This assumes that every library that defines something named `where` (and 
> every library that references it)
> are maintained​. If the parser just starts treating `where` as a keyword, 
> working code will not parse. That
> may be acceptable (I don't know what the policy is), but it makes 
> introducing keywords more costly than
> an approach that allows old code to continue working.
>

Fair enough.

If that solution is taken, I want the linters to complain about verbatim 
uses as a stopgap measure that ultimately should be removed.  I don't think 
interfaces should be naming functions and arguments: "if", "while", etc.  I 
think PEP 08 should discourage its use as well except when it's necessary 
to continue to use an unmaintained interface.


> -- Carl Smith
> carl.... at gmail.com <javascript:>
>
> On 17 May 2018 at 19:41, Neil Girdhar <miste... at gmail.com <javascript:>> 
> wrote:
>
>> My preference is to do nothing.  If you end up making "where" a keyword 
>> in Python 3.8, numpy will probably:
>> * rename their where function to "where_" in 3.8
>> * add a where_ alias in Python < 3.8.
>>
>> And then people will have to fix their code in 3.8 anyway.  Only instead 
>> of learning a new verbatim syntax, they will just add the familiar 
>> underscore.
>>
>> One thing that should ideally be done is to improve the SyntaxError 
>> processing to special case use of keywords in places that identifiers are 
>> used.  Instead of:
>>
>> In [1]: for if in range(10):
>>   File "<ipython-input-1-a51677fa6668>", line 1
>>     for if in range(10):
>>          ^
>> SyntaxError: invalid syntax
>>
>> How about
>>
>> In [1]: for if in range(10):
>>   File "<ipython-input-1-a51677fa6668>", line 1
>>     for if in range(10):
>>          ^
>> SyntaxError: "if" was used where a variable belongs, but "if" is a 
>> keyword.  Consider using "if_" instead.
>>
>> Similarly,
>>
>> In [2]: int.if
>>   File "<ipython-input-2-72291900e846>", line 1
>>     int.if
>>          ^
>> SyntaxError: "if" was used where an attribute name belongs.  Did you mean 
>> "if_"?
>>
>> SyntaxError doesn't need to quickly generate its error strings.  So there 
>> is only an upside to having clear error messages.
>>
>> On Thursday, May 17, 2018 at 1:54:42 PM UTC-4, Stephan Houben wrote:
>>>
>>> Fortunately we have Unicode bold characters nowadays
>>>
>>> 𝐢𝐟 if 𝐢𝐧 in:
>>>     𝐫𝐞𝐭𝐮𝐫𝐧 return
>>>
>>> Look ma! No syntactic ambiguity!
>>>
>>> That's hilarious :) 
>>
>>> Stephan
>>>
>>> 2018-05-17 19:10 GMT+02:00 Chris Barker via Python-ideas <
>>> python... at python.org>:
>>>
>>>> On Wed, May 16, 2018 at 2:09 PM, Carl Smith <carl.... at gmail.com> wrote:
>>>>
>>>>> If your position is that Guido shouldn't introduce keywords that are 
>>>>> currently used as names at all,
>>>>>
>>>>
>>>> Exactly -- which is why I'm wondering my no one (that I've seen -- long 
>>>> thread)  is presenting the backwards option:
>>>>
>>>> Any new keywords introduced will be non-legal as regular names.
>>>>
>>>> \new_key_word
>>>>
>>>> for instance.
>>>>
>>>> Makes me think that it may have been good to have ALL keywords somehow 
>>>> non-legal as user-defined names -- maybe ugly syntax, but it would make a 
>>>> clear distinction.
>>>>
>>>> how ugly would this be?
>>>>
>>>> \for i in range(n):
>>>>     \while \True:
>>>>         ...
>>>>
>>>> pretty ugly :-(
>>>>
>>>> But maybe not so much if only a handful of new ones....
>>>>
>>>> Or is there another currently illegal character that could be used that 
>>>> would be less ugly?
>>>>
>>>> I'm actually confused as to what the point is to the \ prefix idea for 
>>>> names:
>>>>
>>>> * It would still require people to change their code when a new keyword 
>>>> was introduced
>>>>
>>>> * It would be no easier / harder than adding a conventional legal 
>>>> character -- trailing underscore, or ???
>>>>
>>>> * but now the changed code would no longer run on older versions of 
>>>> python.
>>>>
>>>> I guess it comes down to why you'd want to call out:
>>>>
>>>> "this is a name that is almost like a keyword"
>>>>
>>>> Seems like a meh, meh, lose proposal to me.
>>>>
>>>> OK, I see one advantage -- one could have code that already has BOTH 
>>>> word and word_ names in it. So when word becomes a keyword, a tool that 
>>>> automatically added an underscore would break the code. whereas if it 
>>>> automatically added an currently illegal character, it wouldn't shadow 
>>>> anything.
>>>>
>>>> But a sufficiently smart tool could get around that, too.
>>>>
>>>> -CHB
>>>>
>>>>
>>>> -- 
>>>>
>>>> Christopher Barker, Ph.D.
>>>> Oceanographer
>>>>
>>>> Emergency Response Division
>>>> NOAA/NOS/OR&R            (206) 526-6959   voice
>>>> 7600 Sand Point Way NE   (206) 526-6329   fax
>>>> Seattle, WA  98115       (206) 526-6317   main reception
>>>>
>>>> Chris.... at noaa.gov
>>>>
>>>> _______________________________________________
>>>> Python-ideas mailing list
>>>> Python... at python.org
>>>> https://mail.python.org/mailman/listinfo/python-ideas
>>>> Code of Conduct: http://python.org/psf/codeofconduct/
>>>>
>>>>
>>>
>> _______________________________________________
>> Python-ideas mailing list
>> Python... at python.org <javascript:>
>> https://mail.python.org/mailman/listinfo/python-ideas
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180517/d0c31f55/attachment-0001.html>


More information about the Python-ideas mailing list