摘要
這篇文章主要是為了讓自己記住字典不是序列,python中序列的類型
序列化的定義
有個朋友問我,什么是序列化,我瞬間懵了,然后查了一下,發現廖雪峰老師給出了一個很舒服的解釋:
序列化:我們把變量從內存中變成可存儲或傳輸的過程稱之為序列化,在Python中叫pickling,在其他語言中也被稱之為serialization,marshalling,flattening等等,都是一個意思。
反序列化:反過來,把變量內容從序列化的對象重新讀到內存里稱之為反序列化,即unpickling。
從概念可以得出,字典肯定不是序列,不然就可以直接寫入文件存儲了。
python中sequence(序列)
這是官方文檔中的解釋,對應的鏈接地址點這兒
翻譯過來大概意思就是:
一個可迭代對象,它支持通過__getitem__()特殊方法使用整數索引高效地訪問元素,並定義了一個__len__()方法,該方法返回序列的長度。一些內置的序列類型是list、str、tuple和bytes。注意,dict也支持__getitem__()和__len__(),但它被認為是一個映射,而不是一個序列,因為查找使用任意不可變鍵,而不是整數。
collections.abc.Sequence抽象基類定義了一個比__getitem__()和__len__()更豐富的接口,增加了count(),index(),__contains__(),和__reversed__()。可以使用register()顯式注冊實現此擴展接口的類型。