最好的开发网站建设价格,个人网站怎样做超链接,硬件开发用什么语言,江西九江永修网站建设我一直以为ab和aab是一样的#xff0c;毕竟效果是一样的嘛。后来我发现并不是这么回事#xff1f;我发现当变量是不可变对象时#xff0c;ab和aab是一样的#xff0c;不过我注意到了前后两个a已经不是同一个对象了。而当变量是可变对象时#xff0c;虽然ab和aab的效果是一…我一直以为ab和aab是一样的毕竟效果是一样的嘛。后来我发现并不是这么回事我发现当变量是不可变对象时ab和aab是一样的不过我注意到了前后两个a已经不是同一个对象了。而当变量是可变对象时虽然ab和aab的效果是一样的但是aab前后的两个a也不是同一个对象了而ab前后两个a还是同一个对象。# 不可变对象# ab 前后的a不是同一个对象 a1 b2 id(a)140722530604704 ab id(a)140722530604768 print(a)3# aab 前后的a也不是同一个对象 a1 b2 id(a)140722530604704 aab id(a)140722530604768 print(a)3# 可变对象# ab 前后的a是同一个对象 a[1,2] b[3,4] id(a)214391266944 ab id(a)214391266944 print(a)[1, 2, 3, 4]# aab 前后的a不是同一个对象 a[1,2] b[3,4] id(a)2143494790272 aab id(a)2143494790592 print(a)[1, 2, 3, 4]这是怎么回事呢看了一下各位大佬写的文章总算是弄明白了一些。操作调用的是__add__方法__add__方法会返回一个新的对象原对象不修改。操作调用了__iadd__方法__iadd__方法直接在原对象上进行更新该方法的返回值为None。没有该方法时再尝试调用__add__方法。不可变对象只有__add__方法没有__iadd__可变对象有__add__方法也有__iadd__结论当变量是不可变对象时ab和aab调用的都是__add__方法返回的是一个新对象当变量是可变对象时ab调用的是__iadd__方法直接在原对象上进行更新aab调用的是__add__方法返回一个新对象