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

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

作者: zhu_yong | 来源:发表于2018-06-25 12:23 被阅读0次
    • is比较的是内存地址(可以用id()查看内存地址)
    • ==比较值

      先在shell中输入以下代码: image.png
    image.png

    在shell中处理含有非单词字符的字符串的时候会临时分配多个内存

    单词字符:正则中的\w,包括大小写字母、数字、下划线这三类。

    可以试试123 、x!y!z 、 x y z以及其他任何组合

    但是在shell里是一行一行执行,所以同一行的话两个字符串的内存地址是一样的。 image.png

    但是将代码放入可执行文件中执行就又不同了:
    将以下代码写入文件test.py中,执行文件

    a = 'shi yan lou'
    b = 'shi yan lou'
    print(a is b)
    
    执行结果: image.png
    • 在shell中单行执行时是临时分配的内存地址,而在程序中,字符串是不可变类型,只有一个地址。

    注意!!!以上只是说了字符串等不可变对象
    list、dict等可变类型无论在shell里还是在代码中id都是不一样的。

    有人可能会问tuple,tuple虽然是不可变类型,但是具有可变性。意思是虽然tuple本身不可变,但tuple中元素可以是list等可变的类型!

    有意思的一点是None这个值,任何时候任何地点无论什么情况它都风雨无阻的id(None) == 10061536。

    相关文章

      网友评论

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

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