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)