采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
>>> id({2,1,3}) 93757112 >>> id({1,2,3}) 93757112 >>> {1,2,3} is {2,1,3} False
这个是什么原因呢?
老师,我彻底懵了。
图中a和b的id不一样是没什么疑问的;
但{1,2,3}和{2,1,3}的id一样,甚至{4,1,3}的id都一样?!是怎么回事?
{1,2,3}is{2,1,3}返回的False,且第二次print id的时候发生了变化,这是为什么呢?
我专门查了id()的文档,但也没弄明白。
虽然可能在实际编程中没多大用途,可还是很好奇啊。
然后我还发现了一点,就是打印列表的id的时候,同样会出现id相同的情况,而元组的id则不同。
那么这种情况是跟可变对象和不可变对象有关系?id()返回的到底是什么呀?
啊,我好像想通了。是原地可变吧? id返回的是内存地址,实际上集合的地址没变而内容是变了的,所以is返回False。列表也是。 老师,是这样吧?
这里这里。
难道是系统的问题?我是mac系统。。怎么换顺序,内存地址都是相同的
试了好几次都是不同的。
你要看下is是比较什么。is是判断A是否是B,很明显A不是B,是两个不同的对象。
可是用id函数查看的两个集合的内存地址是相同的啊?
相同的难道is就一定要是相等吗。。。 is不是判断内存地址的啊。
不不不,说错了。我都被搞晕了。
{1,2,3} is {2,1,3} 此时两个集合内存地址不一样
登录后可查看更多问答,登录/注册
语法精讲/配套练习+思考题/原生爬虫实战
5.6k 7
2.5k 3
2.2k 4
4.2k 22
2.3k 19