is id() == 从内存的最小化占用角度解释 我是孕育者,我也应该这样设计 变,必然伴随着加法 一个list是否可以执行set()

def f(a, b):
    print(a is b, b is a, a == b, a.__eq__(b), id(a), id(b))


f(2, 2)
f([2], [2])
f('2', '2')
f(2.2, 2.2)
f((2.2), (2.2))
f({2: 2}, {2: 2})
True True True True 1832760416 1832760416
False False True True 31928520 31928584
True True True True 30448416 30448416
True True True True 30085336 30085336
True True True True 30085336 30085336
False False True True 31092096 31092456

  

从内存的最小化占用角度解释

 变,必然伴随着加法

# set()  TypeError  unhashable type:'list'

具有可变性(mutable)的值,不可哈希化

[2,2,3,4] 可以执行set(l)
[[2],[2],[4]] 由于其中的元素具有可变性,故不可进行set(l)操作

一个list是否可以执行set(),取决于其元素,即待set的各个对象是否具有不变性









  

原文地址:https://www.cnblogs.com/rsapaper/p/9064860.html