1. 程式人生 > 實用技巧 >關於python中身份標識"is"與值運算子"=="

關於python中身份標識"is"與值運算子"=="

本文涉及駐留機制,參考部落格園:https://www.cnblogs.com/wuxiaoqian726/articles/1991946.html

在Python中,通過身份標識“is”來判斷是通過記憶體地址來判斷兩個是否相等,而關係運算符“==”是通過值來判斷兩個是否相等

例如:

str1 = "false1"
str2 = "false1"
str3 = "false is great"
str4 = "false is great"

print(str1 == str2) # 輸出True
print(str2 is str1) # 輸出True
print(str3 == str4) # 輸出True
print(str3 is str4) # 輸出False

補充知識點: 關於長型別字串:是指除了由數字,英文字母,下劃線組成的字串之外的字串,與長度無關

上面程式碼結果分析:不難看出str1與str2值相等,並且都是短型別字串,會被儲存在為同一地址,所以輸出結果都為True;而str3與str4雖然值相等,但是由於字串中含有空格,屬於長型別字串,儲存在不同的記憶體地址中,所以在用is進行判斷的時候輸出False;

備註:上述程式碼結果是在控制檯的輸出,在pycharm中因為變數值相等的記憶體地址都會被處理成一個,所以輸出結果都為True,如下圖

以上內容屬於自己遇到的問題加上自己的實驗程式碼對比之後的結果得出的,歡迎大家指出不足之處