
On Mon, Dec 29, 2014 at 03:42:16AM +1100, Chris Angelico wrote:
I mainly did up this patch to see how hard it would be, and now it's turned out to be fairly simple, I'm curious as to whether it would actually be useful to people.
At the point where a global/builtin name lookup is about to raise NameError, first try calling a Python function, along the same lines as __getattr__. If that function hasn't been defined, raise NameError as normal; but if it has, let it either raise NameError or return some object, which is then used as if the name had been bound to it.
An interesting idea, but I don't actually think much of it for interactive use. Having modules magically import themselves without an import is a bad habit for beginners to learn, and less useful for experienced users who know to import things. If I've understood it correctly, it's also process-wide global, rather than limited to a single module. That makes it much less useful, as it risks disguising bugs in library code. -- Steven