关于python的lambda表达式的内存地址

时间:2018-09-23 12:27:07

标签: python lambda

为什么输出不同

情况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,

0 个答案:

没有答案