zoukankan      html  css  js  c++  java
  • 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 有什么问题可以给我留言噢~
  • 相关阅读:
    二叉查找树
    huffman coding
    普通树与二叉树
    递归转循环的通法
    尾递归和JAVA
    编译器和解释器
    开天辟地-用visualstudio2010编写helloworld
    Android app targetSdk升级到27碰到的一个bug补充说明
    Android Studio修改Apk打包生成名称
    Glide3升级到Glide4碰到的问题汇总以及部分代码修改
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10428320.html
Copyright © 2011-2022 走看看