
On Fri, Oct 15, 2021 at 06:37:04PM -0400, Ricky Teachey wrote:
You say a soft keyword isn't an option and I understand why, but what about one that is incredibly unlikely to have been used very often? I'm thinking of just a simple double underscore:
a = __ a 'a'
I frequently use double underscore as a "don't care" name to avoid shadowing the single underscore, which has special meaning in the interactive interpreter as the previous result. Jupyter and IPython use `__` for the second previous result, and `___` for the third previous result. In [10]: 2*6 Out[10]: 12 In [11]: 2*4 Out[11]: 8 In [12]: _ + __ Out[12]: 20 It would be nice if somebody were to do a survey of other languages and see which ones, if any, provide this functionality and what token they use for it. The token should preferably be: * self-explanatory, not line-noise; * shorter rather than longer, otherwise it is easier to just type the target name as a string: 'x' is easier to type than NAME_OF_ASSIGNMENT_TARGET; * backwards compatible, which means it can't be anything that is already a legal name or expression; * doesn't look like an error or typo. I don't think we can satisfy all four requirements, and I'm not entirely convinced that the use-cases are common or important enough to justify this feature if it only satisfies two or three of them. Classes, functions, decorators and imports already satisfy the "low hanging fruit" for this functionality. My estimate is that well over 99% of the use-cases for this fall into just four examples, which are already satisfied by the interpreter: # like `math = __import__('math')` import math # like K = type('K', (), ns) class K(): ... # like func = types.FunctionType(code, globals, # name='func', argdefs, closure) def func(): ... # like func = decorator(func) # similarly for classes @decorator def func(): ... If we didn't already have interpreter support for these four cases, it would definitely be worth coming up with a solution. But the use-cases that remain are, I think, quite niche and uncommon. -- Steve