题目:li = [lambda :x for x in range(10)]
回忆列表生成器:
a = [x for x in range(10)]
循环其实是一个不断赋值的过程
相当于:
x = 0
a.append(x)
x = 1
a.append(x)
...```
`lambda :x` 相当于
def f():
return x```
[lambda :x for x in range(10)]
相当于
for x in range(10):
f
相当于:
x = 0
li.append(f)
x = 1
li.append(f)
...```
于是li列表就是`[f,f,f,f,f,f,f,f,f,f]`
这时候`x = 9`
于是调用的时候都是9
其他:return 可以加括号也可以不加
... return [12345]
...
f()
[12345]
def f():
... return ([12345])
...
f()
[12345]```
网友评论