[Python-Dev] Documentation idea
Terry Reedy
tjreedy at udel.edu
Sat Oct 11 06:46:19 CEST 2008
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.
More information about the Python-Dev
mailing list