On Sat, Oct 16, 2021 at 6:22 AM Erik Demaine <edemaine@mit.edu> wrote:

It's not especially short, and it's not backward-compatible,
but at least there's a history of adding double-underscore things.
Perhaps, for backward compatibility, the feature could be disabled in any
scope (or file?) where __lhs__ is assigned, in which case it's treated like a
variable as usual.  The magic version only applies when it's used in a
read-only fashion.  It's kind of like a builtin variable, but its value
changes on every line (and it's valid only in an assignment line).

This could probably be toggled via a __future__ import which would make its
usage more apparent to readers of the file. But this would imply that the
keyword would eventually be turned on by default; I don't think there are any
examples of __future__ imports intended to be left forever as options for the
programmer.
I would be against any sort of magic replacement-only-when-otherwise-
NameError. It seems to easy to mistakenly change it value because the
namespace of locals or globals changed somewhere else. 

Regards,
~ Jeremiah