美文网首页Python与数据分析
Python 中的‘==’与‘is’运算符的区别

Python 中的‘==’与‘is’运算符的区别

作者: 葉_Kyle | 来源:发表于2018-09-13 23:23 被阅读0次

    今天在练习时碰到一道题:

    a = [1,2,3]
    b = a
    c = [1,2,3]
    #分别用’==‘和’is'对‘a'和'c’进行运算,会得到什么结果?
    

    测试一下

    >>>print (a == b)
    True
    >>>print (a is b)
    True
    >>>print (a == c)
    True
    >>>print (a is c)
    False
    

    这是为什么呢?

    原来,‘==’是比较运算符,判断两边的值是否相等,而‘is'是恒等(有的地方叫同一性运算符),判断的是对象间的唯一身份标识(id),通过下面的代码进行验证:

    >>> print (id(a))
    2062234790664
    >>> print (id(b))
    2062234790664
    >>> print (id(c))
    2062234790600
    

    从中也可以学到将一个变量赋的值给另一个变量时,是将第一个变量的id赋给第二个变量。
    问题又来了,是所有的运算对象都是这个结果吗?

    >>> a = 1 #a和b为数值类型
    >>> b = 1
    >>> a is b
    True
    >>> a = 'fish' #a和b为字符串类型
    >>> b = 'fish'
    >>> a is b
    True
    >>> id(a)
    >>> id(b)
    >>> a = (1,2,3) #a和b为元组类型
    >>> b = (1,2,3)
    >>> a is b
    False
    >>> a = [1,2,3] #a和b为list类型
    >>> b = [1,2,3]
    >>> a is b
    False
    >>> a = {'fish':1,'cat':2} #a和b为dict类型
    >>> b = {'fish':1,'cat':2}
    >>> a is b
    False
    >>> a = set([1,2,3])#a和b为set类型
    >>> b = set([1,2,3])
    >>> a is b
    False
    

    通过上例可看出,只有数值型和字符串型的情况下,a is b才为True,当a和b是tuple,list,dict或set型时,a is b为False

    相关文章

      网友评论

        本文标题:Python 中的‘==’与‘is’运算符的区别

        本文链接:https://www.haomeiwen.com/subject/pkxngftx.html