On Mon, Apr 27, 2020 at 12:51 PM Ethan Furman <ethan@stoneleaf.us> wrote:
On 04/26/2020 05:11 PM, Steven D'Aprano wrote:
On Sun, Apr 26, 2020 at 06:43:06PM +0200, Alex Hall wrote:
It's not clear to me why people prefer an extra function which would be exactly equivalent to lru_cache in the expected use case (i.e. decorating a function without arguments). It seems like a good way to cause confusion, especially for beginners. Based on the Zen, there should be one obvious way to do it.
Indeed, and if you want to guarantee that a function is executed exactly *once*, then a decorator called *once* is that Obvious Way.
How many beginners do you know who even know what a LRU cache is?
How many beginners know they want to call a function only once?
Perhaps they'd more ask "how can I calculate this lazily". A function that's called only once is basically a lazily-calculated value. If you combine @property and @once then you actually would have a lazy attribute. ChrisA