今天扣丁學堂小編給大家介紹一下關於Python編程語言is和==的區別是什麼?首先在Python中一切都是對象,Python中對象包含的三個基本要素,分別是:id(身份標識)、type(數據類型)和value(值)。對象之間比較是否相等可以用==,也可以用is。目前is和==都是對對象進行比較判斷作用的,但對對象比較判斷的內容並不相同。下面來看看具體區別在哪?
is比較的是兩個對象的id值是否相等,也就是比較兩個對象是否爲同一個實例對象,是否指向同一個內存地址。
==比較的是兩個對象的內容是否相等,默認會調用對象的__eq__()方法。以下代碼在Python3.5下測試通過。
==比較操作符和is同一性運算符區別,==是python標準操作符中的比較操作符,用來比較判斷兩個對象的value(值)是否相等。
代碼1:
>>>a=[1,2,3]
>>>b=a
>>>bisa
True
>>>b==a
True
>>>b=a[:]
>>>bisa
False
>>>b==a
True
解釋一下爲什麼?is也被叫做同一性運算符,也就是id是否相同。看下面代碼,a和b變量的id不同,所以b==a是True,bisa是False.
代碼2:
>>>id(a)
4364243328
>>>
>>>id(b)
4364202696
哪些情況下is和==結果是完全相同的?
代碼3:
>>>a=256
>>>b=256
>>>aisb
True
>>>a==b
True
>>>
>>>a=1000
>>>b=10**3
>>>a==b
True
>>>aisb
False
>>>
結論:數字類型不完全相同。爲什麼256時相同,而1000時不同?因爲出於對性能的考慮,Python內部做了很多的優化工作,對於整數對象,Python把一些頻繁使用的整數對象緩存起來,保存到一個叫small_ints的鏈表中,在Python的整個生命週期內,任何需要引用這些整數對象的地方,都不再重新創建新的對象,而是直接引用緩存中的對象。Python把這些可能頻繁使用的整數對象規定在範圍[-5,256]之間的小對象放在small_ints中,但凡是需要用些小整數時,就從這裏面取,不再去臨時創建新的對象。
代碼4:
>>>c=codingke.com'
>>>d=codingke.com'
>>>cisd
False
>>>c==d
True
>>>c='codingkecom'
>>>d='codingkecom'
>>>cisc
True
>>>c==d
True
結論:字符串類型不完全相同。這個和解釋器實現有關。
代碼5:
>>>a=(1,2,3)#a和b爲元組類型
>>>b=(1,2,3)
>>>aisb
False
>>>a=[1,2,3]#a和b爲list類型
>>>b=[1,2,3]
>>>aisb
False
>>>a={codingke:100,'com':1}#a和b爲dict類型
>>>b={codingke:100,'com':1}
>>>aisb
False
>>>a=set([1,2,3])#a和b爲set類型
>>>b=set([1,2,3])
>>>aisb
False
結論:當變量是數字、字符串、元組,列表,字典時,is和==都不相同,不能互換使用!當比較值時,要使用==,比較是否是同一個內存地址時應該使用is。當然,開發中比較值的情況比較多。
以上就是關於Python視頻教程之is和==的區別的詳細介紹,最後想要了解更多資訊或學習Python開發請關注扣丁學堂官網和微信公衆號。扣丁學堂作爲知名的IT培訓機構,不僅有專業的Python培訓講師和與時俱進的課程體系,還有大量的Python全棧開發工程師視頻教程供學員觀看學習,想要學好Python開發技術的小夥伴就抓緊時間行動吧。扣丁學堂Python技術交流羣:279521237。