- is比较的是内存地址(可以用id()查看内存地址)
-
==比较值
先在shell中输入以下代码: 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。
网友评论