python对象身份的比较

  1. 对象和类
    对象=属性+方法
    python是把所有的都当做一个对象,属性就是一个具体的值,而方法就是对于对象来说,可以通过什么方法来操作对象。

  2. 对象身份的比较

foo1=foo2=4.3 --->可能我们会认为这是一个多重赋值的过程,将4.3赋值为foo1,foo2这两个变量,但是实际上是创建了一个4.3的数字对象,然后将这个对象的引用赋值给foo1,foo2,也就是说foo1和foo2得到不是4.3本身,而是对4.3这个对象的引用。
python中创建了一个对象,然后赋值给变量的只是对象的一个引用,每赋值一次就相当于给变量添加了一个标签,当所有的标签都撕掉时,那么这个对象就会被回收。
对于python来说,每个对象天生都有一个计数器,用来计数有多少个变量引用了自己。
a is b----->等价于id(a)=id(b)
--->is  is not 用来判断两个变量是否指向同一对象
#-----------------------对象身份的比较------------------------#
#-----------------------对象身份的比较------------------------#
a=[1,3,4]
#变量a---->指向对象[1,3,4]
b=a
#变量b---->指向变量a---->这里把a看作一个对象
result= a is b
result1=a is not b
#判断变量a和变量b是否指向同一对象
print result,result1

打印结果:


True False
Process finished with exit code 0

我们还可以通过id()来判断两个变量是否指向同一个对象

(a,b,c,d,e,f)=(1,1,2,1.0,1.0,2.0);
print a,b,c,d,e,f
print id(a),id(b),id(c),id(d),id(e),id(f);
打印:
   1         1        2       1.0       1.0    2.0
39679632 39679632 39679620 39712480 39712480 39712448
--->我们可以看到a,b的id相同
d,e的id相同
欢迎关注我的公众号:小秋的博客 CSDN博客:https://blog.csdn.net/xiaoqiu_cr github:https://github.com/crr121 联系邮箱:rongchen633@gmail.com 有什么问题可以给我留言噢~
原文地址:https://www.cnblogs.com/flyingcr/p/10428320.html