[Python-ideas] Bad programming style in decorators?

u8y7541 The Awesome Person surya.subbarao1 at gmail.com
Sat Jan 2 22:00:38 EST 2016


The wrapper functions themselves, though, exist in a one:one
> correspondence with the functions they're applied to - when you apply
> functools.lru_cache to a function, the transient decorator produced by
> the decorator factory only lasts as long as the execution of the
> function definition, but the wrapper function lasts for as long as the
> wrapped function does, and gets invoked every time that function is
> called (and if a function is performance critical enough for the
> results to be worth caching, then it's likely performance critical
> enough to be thinking about micro-optimisations). (Nick Coghlan)


Yes, that is what I was thinking of. Just like Quake's fast inverse square
root. Even though it is a micro-optimization, it greatly affects how fast
the game runs.

But, as I explained, the function will _not_ be redefined and trashed every
> frame; it will be created one time. (Andrew Barnert)


Hmm... Nick says different...

This all suggests that if your application is severely memory
> constrained (e.g. it's running on an embedded interpreter like
> MicroPython), then it *might* make sense to incur the extra complexity
> of using classes with a custom __call__ method to define wrapper
> functions, over just using a nested function. (Nick Coghlan)


Yes, I was thinking of that when I started this thread, but this thread is
just from my speculation.


-- 
-Surya Subbarao
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160102/ea10708d/attachment-0001.html>


More information about the Python-ideas mailing list