zoukankan      html  css  js  c++  java
  • ==值相等 is同一性

    Python中对象包含的三个基本要素,分别是:id(身份标识)、python type()(数据类型)和value(值)。

    ==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面两个字符串间的比较:
    >>> a = 'iplaypython.com'
    >>> b = 'iplaypython.com'
    >>> a == b
    True

    is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。通过对下面几个列表间的比较,你就会明白is同一性运算符的工作原理:
    >>> x = y = [4,5,6]
    >>> z = [4,5,6]
    >>> x == y
    True
    >>> x == z
    True
    >>> x is y
    True
    >>> x is z
    False

    一个类的不同对象,值不同,要特别注意需要理解一下

    class Person(object):
        def __init__(self, name):
            self.name = name
    
    p1 = Person('')
    p2 = Person('')
    
    print('p1 == p2: %s' % (p1 == p2))   #  False   
    print('p1 is p2: %s' % (p1 == p2))   #  False
    print(p1)    #    <__main__.Person object at 0x02D08350>
    
    
    print(p2)    #    <__main__.Person object at 0x02D082F0>
     

    看来了两个实例值应该相等,但是我们可以自定义  __eq__ 判断传递的值相等

    # 定义__eq__方法,重新实现==比较方法
    class NewPerson(object):
        def __init__(self, name):
            self.name = name
    
        def __eq__(self, person_obj):
            """执行==时调用的方法"""
            return self.name == person_obj.name
    np1 = NewPerson("王胖胖")
    np2 = NewPerson("王胖胖")
    
    print("np1 == np2: %s" % (np1 == np2))  # True
    print("np1 is np2: %s" % (np1 is np2))  # False
    LESS IS MORE !
  • 相关阅读:
    UnityEngine中Animator相关类的说明
    MecanimControl插件随笔
    Mecanim Control
    Unity3D
    Unity Mecanim在大型mmo中的应用
    Unity3D 性能优化
    Unity3D 图形优化
    U3D开发性能优化笔记(待增加版本.x)
    通过JS语句判断WEB网站的访问端是电脑还是手机
    jquery 鼠标事件汇总
  • 原文地址:https://www.cnblogs.com/maxiaohei/p/7798339.html
Copyright © 2011-2022 走看看