
On 26.10.2021 18:36, Erik Demaine wrote:
On Tue, 26 Oct 2021, Marc-Andre Lemburg wrote:
Now, it may not be obvious, but the key advantage of such deferred objects is that you can pass them around, i.e. the "defer os.listdir(DEFAULT_DIR)" could also be passed in via another function.
Are deferred code pieces are dynamically scoped, i.e., they are evaluated in whatever scope they end up getting evaluated? That would certainly interesting, but also kind of dangerous (about as dangerous as eval), and I imagine fairly prone to error if they get passed around a lot.
Yes, they would work more or less like copy & pasting the deferred code into a new context and running it there. Sure, you can abuse this, but the function running the deferred can make sure that it's working in a trusted environment.
If they're *not* dynamically scoped, then I think they're equivalent to lambda, and then they don't solve the default parameter problem, because they'll be evaluated in the function's enclosing scope instead of the function's scope.
Indeed. Lambdas are similar, but not the same. The important part is running the code in a different context. -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Experts (#1, Oct 26 2021)
Python Projects, Coaching and Support ... https://www.egenix.com/ Python Product Development ... https://consulting.egenix.com/
::: We implement business ideas - efficiently in both time and costs ::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 https://www.egenix.com/company/contact/ https://www.malemburg.com/