簡體   English   中英

Python中的pickle和yaml有什么基本區別?

[英]What are the basic difference between pickle and yaml in Python?

我對Python很天真。 但是,我所知道的是,兩者都被用於序列化和反序列化。 所以,我只是想知道它們之間的所有基本差異是什么?

YAML是一種語言中立格式,可以很好地表示原始類型(int,string等),並且在語言之間具有高度可移植性。 類似於JSON,XML或純文本文件; 只是混合了一些有用的格式約定 - 事實上,YAML是JSON的超集。

Pickle格式特定於Python,可以表示各種各樣的數據結構和對象,例如Python列表,集合和字典; Python類的實例; 以及這些對象列表的組合; 包含包含列表的dicts的對象; 等等

所以基本上:

  • YAML以語言可移植的方式表示簡單的數據類型和結構
  • 泡菜可以代表復雜的結構,但是以非語言可移植的方式

還有更多,但你要求“基本”差異。

當python對象轉換為字節流並返回時, pickle是一種特殊的python序列化格式

“Pickling”是將Python對象層次結構轉換為字節流的過程,“unpickling”是反向操作,從而將字節流轉換回對象層次結構。

重點是它是特定於python的。

另一方面,YAML是與語言無關且人類可讀的序列化格式。

僅供參考,如果您在這些格式之間進行選擇,請考慮:

  • 序列化/派生速度(參見cPickle模塊)
  • 你需要以人類可讀的形式存儲序列化文件嗎?
  • 你要序列化什么? 例如,如果它是一個特定於python的復雜數據結構,那么你應該選擇pickle。

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM