• python == is id


    is: 是否同一对象

    ==: 判断值是否相等,如果定义了__eq__()方法,按__eq__()判断

    id:对象在内存中的地址

    s = 'hello'
    s1 = 'hello'
    print(s == s1)
    print(s is s1)
    print(id(s) == id(s1))

     三个都是true应该跟字符串缓存有关系,指向的都是同一个对象。超过缓存范围,is 和id应该就不一样了(待验证)

    自定义一个类Person

    class Person:
        def __init__(self, name):
            self.name = name
    
        def __eq__(self, other):
            return self.name == other.name
    
    
    zhangsan = Person('zhangsan')
    zhangsan1 = Person('zhangsan')
    
    print(zhangsan == zhangsan1)
    print(zhangsan is zhangsan1)
    print(id(zhangsan) == id(zhangsan1))

    第一个true走的__eq__()逻辑

    第二个应为不是同一对象

    第三个两个对象不在同一个内存位置

    有点类似于java的 == (is) 与 equals()方法(__eq__())对应关系

    使用比较值的使用还是应该使用 ==;类似于java中使用equals方法判断两个对象是否相等

    Please call me JiangYouDang!
  • 相关阅读:
    输入成绩看等级
    java输入学生成绩
    java基础
    关于session
    关于XML
    Java EE Map
    互联网应用和企业级应用的区别
    Java EE学习目标
    软件工程-来换网-软件度量
    web前端--学习成果
  • 原文地址:https://www.cnblogs.com/luckygxf/p/15436960.html
Copyright © 2020-2023  润新知