据我所知,python将通过指向两个等价对象的内存中的相同对象来节省某些不可变类型。如声明变量,以相同数量的(-5和边界256内):相同的不可变元组指向不同的对象
i = 5
j = 5
i is j
>> True
...和集:
tuple1 =()
tuple2 =()
tuple1 == tuple2
>> True
tuple1 is tuple2
>> True
由于集(不可变型)可以包含可变类型,例如作为可修改的列表,我明白了Python不想指向同一个对象的情况一样:
tuple3 = ([1, 2, 3], a, b)
tuple4 = ([1, 2, 3], a, b)
tuple3 is tuple4
>> False
...为什么下面的元组不会指向同一个对象Ť据我所知,嘿都是在所有条件下都不变的?
tuple5 = ((),())
tuple6 = ((),())
tuple5 == tuple6
>> True
tuple5 is tuple6
>> False
寻找特定实现以某种方式完成的原因通常是愚蠢的错误,特别是当强调细节可能随时间变化并且在实现中发生变化时(如此处所示)。我们无法获得做出这些决定的程序员会议,而制作香肠并不总是很美。 –
你正在讨论元组,而不是集合。 – chepner