原地不可變類型又叫可哈希(hashable)類型,原地可變類型又叫不可哈希類型。
hash還是會返回原地不可變類型的hash值,如果對一個原地可變的類型調用次函數,那么會返回TypeError。
只有可以hash的類型才可以作為dict的鍵。
只有可以hash的類型才可以放入set中,所以set本身不可以嵌套存放在set中。
舉例說明:
>>> hash(b'aaa')6904179387427091653>>> hash(bytearray(b'aaa'))Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: unhashable type: 'bytearray'>>> hash(frozenset({1,2,3}))-7699079583225461316>>> hash({1,2,3})Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: unhashable type: 'set'內置函數id()會返回一個對象在內存中實際的存放地址。
>>> L=[1]>>> id(L)49689480>>> L.append(2)>>> id(L)49689480 #在原地修改,所以可以看到存放地址沒有發(fā)生改變。>>> s='aa'>>> id(s)47072456>>> s+='bb'>>> id(s)49700008 #由于不可以在原地修改,所以當字符串變動后,新開辟了一個內存地址進行存放。>>>有序的數據類型稱為序列,支持索引、分片、加法、乘法、計算長度、比較大小操作。
比較時會依次比較每個元素的大小,如果依次比較時發(fā)現類型不相同會跳出錯誤。
新聞熱點
疑難解答