面试题_lambda函数调用

res多少?

1 def func():
2     return [lambda x: i * x for i in range(4)]
3 
4 
5 res = [m(2) for m in func()]
6 
7 # print(res)
8 # 6 6 6 
 1 # 转化版本
 2 def func():
 3     li = []
 4     for i in range(4):
 5         # 此处为函数的定义处
 6         def lam(x):
 7             # 等到lam函数调用时
 8             # 会向外界寻找局部变量i
 9             # 此时i已经被for循环完毕, i==3,
10             # 与内函数发生绑定关系
11             # 所以这四个函数调用的i都是3
12             return x * i
13 
14         li.append(lam)
15     # li列表内是四个lam函数
16     return li
17 
18 
19 # 此处是函数的调用处
20 res = [m(2) for m in func()]
21 print(res)

猜你喜欢

转载自www.cnblogs.com/caihuajiaoshou/p/10624611.html