res多少?
def func():
return [lambda x: i * x for i in range(4)]
res = [m(2) for m in func()]
# print(res)
# 6 6 6
# 转化版本
def func():
li = []
for i in range(4):
# 此处为函数的定义处
def lam(x):
# 等到lam函数调用时
# 会向外界寻找局部变量i
# 此时i已经被for循环完毕, i==3,
# 与内函数发生绑定关系
# 所以这四个函数调用的i都是3
return x * i
li.append(lam)
# li列表内是四个lam函数
return li
# 此处是函数的调用处
res = [m(2) for m in func()]
print(res)