Python for文 スコープ
ハマったので戒めとしてのメモ
Pythonのfor文にはスコープがない
一度lambdaで包む必要がある
>>> map(lambda f: f(), [lambda : i**2 for i in range(5)]) [16, 16, 16, 16, 16] >>> map(lambda f: f(), [(lambda j: lambda : j**2)(i) for i in range(5)]) [0, 1, 4, 9, 16]
ハマったので戒めとしてのメモ
Pythonのfor文にはスコープがない
一度lambdaで包む必要がある
>>> map(lambda f: f(), [lambda : i**2 for i in range(5)]) [16, 16, 16, 16, 16] >>> map(lambda f: f(), [(lambda j: lambda : j**2)(i) for i in range(5)]) [0, 1, 4, 9, 16]