Issue 26575: lambda not closed on specific value in comprehension (original) (raw)

A series of lambdas referring to a variable in a comprehension do not hold distinct values, while conventional higher order function do.

PS C:\Users\David\Desktop> python Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information.

class Caller: ... def init(self, f): ... self._f = f ... def start(self): ... print(self._f()) ... def asFunc(boundValue): ... def func(): ... return boundValue ... return func ... for caller in [Caller(asFunc(x)) for x in range(5)]: ... caller.start() ... 0 1 2 3 4 for caller in [Caller(lambda: x) for x in range(5)]: ... caller.start() ... 4 4 4 4 4