老师,关于两个集合内存地址相同而is运算结果为False我的理解是否是正确的?
来源:5-12 如何判断变量的值、身份与类型

慕用5303712
2019-05-06
不赋值,直接计算下图两个集合的内存地址,得到的内存地址是相同的,而is运算的结果为False
我查找了一些资料解释是说:
1.当执行{2,1,3} is {1,2,3}时,两个set对象是顺序生成的,放在栈里比较,那么这两个set的内存地址肯定是不同的,所以返回为False
2.当执行id({2,1,3}) == id({1,2,3})时,首先生成{2,1,3},然后计算{2,1,3}这个set的地址,当计算完地址以后,没有任何对象指向{2,1,3},这个set被释放,接着生成{1,2,3},由于这两个set内存大小是一样的,又刚好重用了第一个set的内存地址,所以得到的两个set内存地址是一样的,返回结果为True
请问这样理解正确吗??
写回答
1回答
-
7七月
2019-05-07
这个不能解释 == 吧,只能解释两个内存地址相同的问题,这个是没错的。
00
相似问题