[Python-ideas] Delayed Execution via Keyword
steve at pearwood.info
Sat Feb 18 06:39:38 EST 2017
Using "delayed" in function signatures:
On Fri, Feb 17, 2017 at 09:27:35PM -0800, David Mertz wrote:
> That said, I think you are right that it makes no sense to declare a
> function signature with 'delayed' (or 'lazy', 'deferred', whatever word).
It makes perfect sense! That gives us function defaults which are
evaluated only the first time they are needed, instead of when the
function is defined.
def function(spam, eggs=delayed nth_prime(10**9)):
would be equivalent to:
_CACHED_DEFAULT = None
def function(spam, eggs=None):
if eggs is None:
if _CACHED_DEFAULT is None:
_CACHED_DEFAULT = nth_prime(10**9)
I've done this in real life, e.g. to set up an expensive lookup table.
The caller might provide their own, but if not, the function has its own
default, where I want to delay generating the default until it is
More information about the Python-ideas