[Python-ideas] Crazy idea: allow keywords as names in certain positions
contact at brice.xyz
Wed May 16 05:22:42 EDT 2018
I'm not half aware of the way everything works under the hood as the
vast majority here, but I have an idea. It possibly is technically
stupid when you really know how things work, but as I'm not sure, I'm
submitting it anyways:
Why not add the compatibility done at setup.py's level?
Like having something like this:
max_compatibility="3.4" # Defining here Python's max version for
which this lib has been upgraded
Of course, we may use any other word instead of "max_compatibility",
like "designed_for", "python_version", or anything a better English
speaker could think of.
The point is, it would either:
- when you install the library, rename all variables that are now
keywords (we'd know the exact list thanks to max_compatiblity) by
suffixing them with "_"
- or set a flag that will do that when creating the *.pyc files.
Possible problems/limitations I can already find:
- There would still be possible errors when using variable names that
are generated on the fly (I have no clue how this could ever be addressed)
- It might get complicated at some point to know what to do, like when
we have lib_a in some version depending on lib_b (with or without a
max_compatibility version number), it is obvious that lib_a will use
lib_b's original variable names (without the appended "_"), but our code
which might also want to interact with lib_b would have to.
Is it plain stupid? Are there lots of things I didn't think of? Could it
be a possibility?
Le 13/05/2018 à 20:19, Guido van Rossum a écrit :
> As anyone still following the inline assignment discussion knows, a
> problem with designing new syntax is that it's hard to introduce new
> keywords into the language, since all the nice words seem to be used
> as method names in popular packages. (E.g. we can't use 'where'
> because there's numpy.where
> and we can't use 'given' because it's used in Hypothesis
> The idea I had (not for the first time :-) is that in many syntactic
> positions we could just treat keywords as names, and that would free
> up these keywords.
> For example, we could allow keywords after 'def' and after a period,
> and then the following would become legal:
> class C:
> def and(self, other):
> return ...
> a = C()
> b = C()
> This does not create syntactic ambiguities because after 'def' and
> after a period the grammar *always* requires a NAME.
> There are other positions where we could perhaps allow this, e.g. in a
> decorator, immediately after '@' (the only keyword that's
> *syntactically* legal here is 'not', though I'm not sure it would ever
> be useful).
> Of course this would still not help for names of functions that might
> be imported directly (do people write 'from numpy import where'?). And
> it would probably cause certain typos be harder to diagnose.
> I should also mention that this was inspired from some messages where
> Tim Peters berated the fashion of using "reserved words", waxing
> nostalgically about the old days of Fortran (sorry, FORTRAN), which
> doesn't (didn't?) have reserved words at all (nor significant
> whitespace, apart from the "start in column 7" rule).
> Anyway, just throwing this out. Please tear it apart!
> --Guido van Rossum (python.org/~guido <http://python.org/%7Eguido>)
> Python-ideas mailing list
> Python-ideas at python.org
> Code of Conduct: http://python.org/psf/codeofconduct/
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-ideas