为什么输出不同
情况1:列表解析中每个匿名函数对象的地址都相同
t = [id(lambda t: t * i) if i % 2 == 0 else id(lambda x: x ** i + 1) for i in range(4)]
print(t)
[140430836691560、140430836691560、140430836691560、140430836691560]
情况2:取出列表解析中的匿名函数对象,并且地址不同。
for i in [lambda t: t * i if i % 2 == 0 else lambda x: x ** i + 1 for i in range(4)]:
print(id(i), end=",")
140307163083368,140307163083640,140307163083504,140307163083776,