- is比較的是內存地址(可以用id()查看內存地址)
-
==比較值
先在shell中輸入以下代碼:
image.png

image.png
在shell中處理含有非單詞字符的字符串的時候會臨時分配多個內存
單詞字符:正則中的\w,包括大小寫字母、數字、下劃線這三類。
可以試試123 、x!y!z 、 x y z以及其他任何組合
但是在shell里是一行一行執(zhí)行,所以同一行的話兩個字符串的內存地址是一樣的。
image.png
但是將代碼放入可執(zhí)行文件中執(zhí)行就又不同了:
將以下代碼寫入文件test.py中,執(zhí)行文件
a = 'shi yan lou'
b = 'shi yan lou'
print(a is b)
執(zhí)行結果:
image.png
- 在shell中單行執(zhí)行時是臨時分配的內存地址,而在程序中,字符串是不可變類型,只有一個地址。
注意!??!以上只是說了字符串等不可變對象
list、dict等可變類型無論在shell里還是在代碼中id都是不一樣的。
有人可能會問tuple,tuple雖然是不可變類型,但是具有可變性。意思是雖然tuple本身不可變,但tuple中元素可以是list等可變的類型!
有意思的一點是None這個值,任何時候任何地點無論什么情況它都風雨無阻的id(None) == 10061536。
