天天看點

python裡面的==,is的差別

python中對象的三個要素:id(身份标示),type(資料類型)、value(值)

==  比較操作符:用來比較兩個對象值是否相等。 

is  同一性運算符:比較兩個對象的id值是否相等,即是否是同一對象,是否指向同一個記憶體位址。

補充:當兩個對象值相同時,隻有其為數值型或字元串型,a is b才為True,當a和b是tuple,list,dict或set型時,a is b為False

變資料類型:清單list和字典dict;可變資料類型,允許變量的值發生變化,即如果對變量進行append、+=等這種操作後,隻是改變了變量的值,而不會建立一個對象,變量引用的對象的位址也不會變化,不過對于相同的值的不同對象,在記憶體中則會存在不同的對象,即每個對象都有自己的位址,相當于記憶體中對于同值的對象儲存了多份,這裡不存在引用計數,是實實在在的對象。

不可變資料類型:整型int、浮點型float、字元串型string和元組tuple。不可變資料類型,不允許變量的值發生變化,如果改變了變量的值,相當于是建立了一個對象,而對于相同的值的對象,在記憶體中則隻有一個對象,内部會有一個引用計數來記錄有多少個變量引用這個對象

python裡面的==,is的差別

二、python裡面set

Python set是基本資料類型的一種集合類型,它有可變集合(set())和不可變集合(frozenset)兩種。

建立集合set、集合set添加、集合删除、交集、并集、差集的操作都是非常實用的方法。

set 是一個無序的元素集合,支援并、交、差及對稱差等數學運算, 但由于 set 不記錄元素位置,是以不支援索引、分片等類序列的操作。

tuple算是list和str的雜合(雜交的都有自己的優勢,上一節的末後已經顯示了),那麼set則可以堪稱是list和dict的雜合.

set擁有類似dict的特點:可以用{}花括号來定義;其中的元素沒有序列,也就是是非序列類型的資料;而且,set中的元素不可重複,這就類似dict的鍵.

python裡面的==,is的差別