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

2018-06-25  本文已影响0人  zhu_yong
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

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

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

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

上一篇下一篇

猜你喜欢

热点阅读