
On Wed, Jan 20, 2016 at 10:29:48AM +1100, Chris Angelico wrote:
On Wed, Jan 20, 2016 at 3:47 AM, Guido van Rossum <guido@python.org> wrote:
I think it's reasonable to divert this discussion to "value capture". Not sure if that's the usual terminology, but the idea should be that a reference to the value is captured, rather than (as Python normally does with closures) a reference to the variable (implemented as something called a "cell").
+1. This would permit deprecation of the "def blah(...., len=len):" optimization - all you need to do is set a value capture on the name "len".
Some might argue that the default argument trick is already the One Obvious Way to capture a value in a function. I don't think deprecation is the right word here, you can't deprecate "len=len" style code because it's just a special case of the more general name=expr function default argument syntax. I suppose a linter might complain if the expression on the right hand side is precisely the same as the name on the left, but _len=len would trivially work around that. -- Steve