9
字句閉鎖はどのように機能しますか?
私はJavascriptコードの字句クロージャーで発生した問題を調査していたところ、Pythonでこの問題に遭遇しました。 flist = [] for i in xrange(3): def func(x): return x * i flist.append(func) for f in flist: print f(2) この例では注意深く回避していlambdaます。意外と「4 4 4」と印刷されます。「0 2 4」を期待します。 この同等のPerlコードはそれを正しく行います: my @flist = (); foreach my $i (0 .. 2) { push(@flist, sub {$i * $_[0]}); } foreach my $f (@flist) { print …