1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 1 print([f(2) for f in [lambda x:i*x for i in range(5)]]) 2 print([f(2) for f in [lambda x,i=i:i*x for i in range(5)]]) 3 print([(lambda x:i*x)(2) for i in range(5)])
[8, 8, 8, 8, 8] [0, 2, 4, 6, 8] [0, 2, 4, 6, 8]
1 先声5个匿名函数 x是匿名函数的变量,i是匿名函数外部的变量,所以会变,用的是最后的i ,最后调用匿名函数 2 先声5个匿名函数 x,i是匿名函数的变量,i的默认值从外部的i传入 ,最后调用匿名函数 3 一边声明 一边调用 x是匿名函数的变量,i是匿名函数外部的变量
|