首頁 > 後端開發 > Python教學 > python對象的序列化和避難所化:第1部分

python對象的序列化和避難所化:第1部分

Lisa Kudrow
發布: 2025-03-08 09:39:10
原創
692 人瀏覽過

Serialization and Deserialization of Python Objects: Part 1

Python 對象的序列化和反序列化是任何非平凡程序的關鍵方面。如果您將某些內容保存到 Python 文件中,如果您讀取配置文件,或者如果您響應 HTTP 請求,您都會進行對象序列化和反序列化。

從某種意義上說,序列化和反序列化是世界上最無聊的事情。誰會在乎所有這些格式和協議?您想持久化或流式傳輸一些 Python 對象,並在以後完整地取回它們。

這是一種在概念層面上看待世界的好方法。但是,在實際層面上,您選擇的序列化方案、格式或協議可能會決定程序運行的速度、安全性、維護狀態的自由度以及與其他系統互操作的程度。

有如此多的選擇,因為不同的情況需要不同的解決方案。 “一刀切”的方法行不通。在本分兩部分的教程中,我將:

  • 概述最成功的序列化和反序列化方案的優缺點
  • 展示如何使用它們
  • 提供在面對特定用例時在它們之間進行選擇的指導原則

運行示例

在以下部分中,我們將使用不同的序列化器對相同的 Python 對像圖進行序列化和反序列化。為避免重複,讓我們在此處定義這些對像圖。

簡單對像圖

簡單的對像圖是一個字典,其中包含整數列表、字符串、浮點數、布爾值和日期時間對像以及用戶定義的類實例,該實例具有 dump、load 和 dump() 方法,可序列化到打開的文件(類似文件的對象)。

  1. load() 方法從打開的類似文件的對像中反序列化。

  2. TypeError:如下所示:``` Traceback (most recent call last):
    File "serialize.py", line 49, in
    print(json.dumps(complex)
    File "/usr/lib/python3.8/json/init.py", line 231, in dumps
    return _default_encoder.encode(obj)
    File "/usr/lib/python3.8/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
    File "/usr/lib/python3.8/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
    File "/usr/lib/python3.8/json/encoder.py", line 179, in default
    raise TypeError(f'Object of type {o.class.name} '
    TypeError: Object of type A is not JSON serializable

    <code>
    哇!这看起来一点也不好。发生了什么?错误消息是 JSONEncoder 类使用的 default() 方法在 JSON 编码器遇到无法序列化的对象时调用的。
    
    自定义编码器的任务是将其转换为 JSON 编码器能够编码的 Python 对象图。在本例中,我们有两个需要特殊编码的对象:A 类。以下编码器可以完成这项工作。每个特殊对象都转换为“\_\_A\_\_”和 pprint 函数的 load() 和 object_hook 参数,允许您提供自定义函数来将字典转换为对象。
    </code>
    登入後複製

    > def decode_object(o):
    >如果' S')
    > deSerialized = json.loads (序列化,object_hook = decode_object)
    print listialialized)
    >
    print:{'a'a''''a'a'':0) ##評估對 false
    lt> lt;/mainmain.a gt; .a&gt; >
    >

以上是python對象的序列化和避難所化:第1部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板