python 中 is 与 == 的区别
在 Python 中,比較兩個對象是否相等,可以用 “is” 和 “==” ,?is 與 == 的區別是什么呢,首先先清楚is 與 == 的概念
is 的概念:
比較的是兩個對象的id值是否相等,也就是比較倆對象是否為同一個實例對象,是否指向同一個內存地址。
== 的概念:?
比較的是兩個對象的內容是否相等
為了更好的理解下面舉個例子
小明和小王 2個人都上一年級,2人剛上學的時候領取的語文課本,無論外表,還是里面的章節都是一模一樣,但是2人的書是不同的對象
這個時候我們可以使用is 比較, 如果使用== 比較的話,就是相同了
下面在寫一個demo
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b) # 打印結果為False
print(a == b) # 打印結果為True
這里a 就好比小明的語文課本, b 好比小王的語文課本 2個是不同的對象的,所以is 的時候返回的為False
is 比較的是內存地址,我們可以使用id()函數來打印下a 和 b 的內存地址
a = [1, 2, 3]
b = [1, 2, 3]
print(id(a)) # id 值為:1831201289280
print(id(b)) # id 值為:1831201289600
print(a is b) # 打印結果為False
print(a == b) # 打印結果為True
---------------------------------下面在補充一點-------------------------------
python 為了性能考慮,對于值相同的不可變對象,都不會重新創建新的地址來存儲對象,而對于可變對象,則會重新開辟空間
所以當使用is 比較 2個int 類型或者float 類型返回結果為True 的時候不要在質疑我上面下的知識點了,
例如 在使用pycharm 工具 測試下面2個
a = 3.14
b = 3.14
print(a is b) ?# 打印結果為True
或者
a = 500000
b = 500000
print(a is b) ?# 打印結果為True
原因就是:python 為了性能考慮,對于值相同的不可變對象,都不會重新創建新的地址來存儲對象,而對于可變對象,則會重新開辟空間
具體的我在is 與not is 里面寫了,地址鏈接
?
總結
以上是生活随笔為你收集整理的python 中 is 与 == 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。