怎么掌握Python的知識點(diǎn)媳荒?pickle模塊怎么梳理?在學(xué)習(xí)Python的時(shí)間里驹饺,會逐漸的知道什么是Python钳枕,知道int、str赏壹、dict鱼炒、list、bool等Python數(shù)據(jù)類型蝌借,學(xué)習(xí)function田柔、class與對象這一些比較抽象的知識。接下來就給大家分享一下有關(guān)pickle 模塊的知識點(diǎn)骨望。
在Python中硬爆,用于序列化的模塊有兩個(gè):json和pickle。
json主要是用于字符串和Python數(shù)據(jù)類型間進(jìn)行轉(zhuǎn)換擎鸠,提供四個(gè)功能:dumps缀磕、dump、loads、load袜蚕。pickle:用于Python特有的類型和Python的數(shù)據(jù)類型間進(jìn)行轉(zhuǎn)換糟把,同樣提供四個(gè)功能:dumps、dump牲剃、loads遣疯、load。Python中幾乎所有的數(shù)據(jù)類型(列表凿傅、字典缠犀、集合、類等)都可以用pickle來序列化聪舒。
pickle的特點(diǎn)如下:
1辨液、只能在Python中使用,只支持Python的基本數(shù)據(jù)類型箱残。
2滔迈、可以處理復(fù)雜的序列化語法。(例如自定義的類的方法被辑,游戲的存檔等)
3燎悍、序列化的時(shí)候,只是序列化了整個(gè)序列對象盼理,而不是內(nèi)存地址谈山。
pickle模塊是以二進(jìn)制的形式序列化后保存到文件中(保存文件的后綴為“.pkl”),不能直接打開進(jìn)行預(yù)覽榜揖。而python的另一個(gè)序列化標(biāo)準(zhǔn)模塊json勾哩,則是human-readable的抗蠢,可以直接打開查看(例如在notepad++中查看)举哟。
pickle模塊有兩類主要的接口,即序列化和反序列化迅矛。
序列化操作包括:
1)pickle.dump()妨猩,參數(shù)如下:
pickle.dump(obj, file, protocol=None,*,fix_imports=True)
該方法實(shí)現(xiàn)的是將序列化后的對象obj以二進(jìn)制形式寫入文件file中,進(jìn)行保存秽褒。它的功能等同于 Pickler(file, protocol).dump(obj)壶硅。
序列化方法pickle.dumps(),參數(shù)如下:
pickle.dumps(obj, protocol=None,*,fix_imports=True)
pickle.dumps()方法跟pickle.dump()方法的區(qū)別在于销斟,pickle.dumps()方法不需要寫入文件中庐椒,它是直接返回一個(gè)序列化的bytes對象。
2)Pickler(file, protocol).dump(obj)
pickle模塊提供了序列化的面向?qū)ο蟮念惙椒煊唬?class pickle.Pickler(file, protocol=None,*,fix_imports=True),Pickler類有dump()方法约谈。Pickler(file, protocol).dump(obj) 實(shí)現(xiàn)的功能跟 pickle.dump() 是一樣的。
反序列化操作包括:
1)pickle.load(),參數(shù)如下:
pickle.load(file, *,fix_imports=True, encoding=”ASCII”. errors=”strict”)
該方法實(shí)現(xiàn)的是將序列化的對象從文件file中讀取出來棱诱。它的功能等同于 Unpickler(file).load()泼橘。
pickle.loads(),參數(shù)如下:
pickle.loads(bytes_object, *,fix_imports=True, encoding=”ASCII”. errors=”strict”)
pickle.loads()方法跟pickle.load()方法的區(qū)別在于迈勋,pickle.loads()方法是直接從bytes對象中讀取序列化的信息炬灭,而非從文件中讀取。
2)Unpickler(file).load()
pickle模塊提供了反序列化的面向?qū)ο蟮念惙椒夜剑?class pickle.Unpickler(file, *,fix_imports=True, encoding="ASCII". errors="strict"),Pickler類有l(wèi)oad()方法重归。Unpickler(file).load() 實(shí)現(xiàn)的功能跟 pickle.load() 是一樣的。
小編推薦一個(gè)學(xué)Python的學(xué)習(xí)裙【 ?126镰官,427提前,833 ?】,無論你是大牛還是小白泳唠,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)狈网!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享笨腥!
在學(xué)習(xí)Python的過程拓哺,會從一開始的新手到能夠熟練地自主的敲一些簡單的代碼,慢慢的進(jìn)步非常大脖母。因此士鸥,選擇專業(yè)的學(xué)習(xí)會讓自己更快的進(jìn)入Python開發(fā)行業(yè)。