
On 2/18/17, Steven D'Aprano <steve@pearwood.info> wrote: Sorry Steve that I use your words probably too much out of context! I just want to reuse your examples to analyze if proposed "delayed execution" is really necessary. Thanks for them! :)
print("Start") result = delayed: get_nth_prime(10**6) # I dislike this syntax print("Done") print(result)
If we change "delayed" keyword to "lambda" keyword then we just need to explicitly say when to evaluate (which I am not sure is bad thing). On 2/18/17, Steven D'Aprano <steve@pearwood.info> wrote:
The caching means that: spam = delayed: calculate(1) eggs = spam
eggs == spam would be true, and calculate would have only been called once, not twice.
If we really need something like this then we could use "def" keyword (for delayed execution) and explicitely caching (for example with functools.lru_cache). print("Start") @functools.lru_cache(1) def result(): return get_nth_prime(10**6) # this code is delayed print("Done") print(result()) print("Start 2") print(result()) result2 = result print(result() == result2()) print("Done 2")