Brett Cannon wrote: > On Fri, Oct 10, 2008 at 1:45 PM, Terry Reedy <tjreedy at udel.edu> wrote: >> The advantage of the decorator version is that the compiler or module loader >> could be special cased to recognize the 'C' decorator and try it first >> *before* using the Python version, which would serve as a backup. There >> could be a standard version in builtins that people could replace to >> implement non-standard loading on a particular system. To cater to other >> implementations, the name could be something other than 'C', or we could >> define 'C' to be the initial of "Code" (in the implementation language). >> Either way, other implementation could start with a do-nothing "C" >> decorator and run the file as is, then gradually replace with lower-level >> code. >> > > The decorator doesn't have to require any special casing at all > (changing the parameters to keep the code short):: > > def C(module_name, want): > def choose_version(ob): > try: > module = __import__(module_name, fromlist=[want]) > return getattr(module, want) > except (ImportError, AttributeError): > return ob > return choose_version > > The cost is purely during importation of the module and does nothing > fancy at all and relies on stuff already available in all Python VMs. If I understand correctly, this decorator would only be applied *after* the useless Python level function object was created. I was proposing bypassing that step when not necessary, and I believe special casing *would* be required for that.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4