美文网首页
Python “is”和“==”的区别

Python “is”和“==”的区别

作者: 马尔代夫Maldives | 来源:发表于2018-09-22 11:12 被阅读0次
    1.jpg
    ==:判断两个量的“值”是否相同
    基本语法:A == B
    返回bool值,当A和B的值相同时,返回True,否则返回False。

    is:判断两个量的“内存地址”是否相同
    基本语法:A is B(即判断id(A)是否等于id(B))
    返回bool值,当A和B的内存地址相同时,返回True,否则返回False。

    如果A is B为True,那么A==B必然也是True,因为同一块地址肯定只能存一个值;反过来则不成了,如果A==B为True,A is B不一定为True,因为相同的值可以存储在不同的内存中。因此is判断比==更严格。

    例1:

    >>>a = [1,2,3]
    >>>b = a
    >>>print(a == b)
    True
    >>>print(a is b)
    True
    >>>print(id(a))
    96345160
    >>>print(id(b))
    96345160
    
    

    上例中,a = [1,2,3],首先开辟了一块内存地址,并将该地址的值设置为[1,2,3],然后将变量(引用)a指向这块内存。b=a则是将变量(引用)b也指向这块内存地址(python决定了这种“变量之间的直接赋值方式”不会新开辟一块内存),结果就是a和b指向相同的地址,当然值也相同。因此a is b 和a == b 的结果都是True。

    例2:

    >>>a = [1,2,3]
    >>>b = [1,2,3]
    >>>print(a == b)
    True
    >>>print(a is b)
    False
    >>>print(id(a))
    96653000
    >>>print(id(b))
    96615176
    

    例2仅仅是把b = a换成了b = [1,2,3],这两者有本质的差异,后者重新开辟了一块内存,并把他的值设置为[1,2,3],然后将b指向这块内存。显然a == b是True,因为值相同;而a is b为False,因为两者指向了不同的内存地址。

    相关文章

      网友评论

          本文标题:Python “is”和“==”的区别

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