Skip to content
编程开物
编程开物

一段代码,一段Prompt,一物成型。 探索编程、AI应用、架构设计与产品设计,分享工程实践,记录技术学习、工作总结与产品创造。

  • 首页
  • 编程基础
  • 数据与AI
    • 数据工程
    • AI基础理论
    • AI实践应用
  • 系统架构
    • 传统应用架构设计
    • AI应用架构设计
  • 项目管理
  • 产品设计
  • 技术教程
  • 行业动态
  • 编程笔记
  • 实用技巧
  • 关于我
编程开物

一段代码,一段Prompt,一物成型。 探索编程、AI应用、架构设计与产品设计,分享工程实践,记录技术学习、工作总结与产品创造。

《Python编程》015 – Python Pickle:高效的对象序列化与反序列化工具

编码者, 2023年8月8日2023年8月8日

Python Pickle介绍及其作用

Python Pickle是一个强大的模块,用于序列化和反序列化Python对象。它能够将复杂的数据结构转换为字节流,便于存储在文件中或通过网络进行传输。无需安装额外的库,Python Pickle已经内置在Python中,为开发者提供了便捷和灵活的数据处理工具。

序列化对象的示例代码

下面是一个示例代码,展示了如何使用Python Pickle对对象进行序列化:

import pickle

# 定义要序列化的对象
data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

# 打开文件,以二进制写入模式
with open("data.pkl", "wb") as file:
    # 序列化对象并写入文件
    pickle.dump(data, file)

在这个示例中,我们定义了一个名为data的字典对象,并使用pickle.dump()函数将其序列化到名为data.pkl的文件中。

反序列化对象的示例代码

下面是一个示例代码,展示了如何使用Python Pickle对对象进行反序列化:

import pickle

# 打开文件,以二进制读取模式
with open("data.pkl", "rb") as file:
    # 反序列化并加载数据到变量
    data = pickle.load(file)

# 打印反序列化后的数据
print(data)

在这个示例中,我们使用pickle.load()函数从名为data.pkl的文件中读取序列化的数据,并将其反序列化为对象。最后,我们打印了反序列化后的数据。

自定义对象的序列化和反序列化

Python Pickle还支持自定义对象的序列化和反序列化。为了实现自定义对象的序列化和反序列化,我们需要在对象的类中实现__getstate__()和__setstate__()方法。下面是一个示例代码:

import pickle

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __getstate__(self):
        return {
            "name": self.name,
            "age": self.age
        }

# 创建Person对象
person = Person("John", 30)

# 序列化对象
serialized_data = pickle.dumps(person)

# 反序列化对象
deserialized_person = pickle.loads(serialized_data)

# 打印反序列化后的对象属性
print(deserialized_person.name)
print(deserialized_person.age)

在这个示例中,我们定义了一个名为Person的自定义类,并实现了__getstate__()方法来指定对象状态。我们创建了一个Person对象,并使用pickle.dumps()将其序列化为字节流,然后使用pickle.loads()将字节流反序列化为对象。最后,我们打印了反序列化后的对象属性。

总结

Python Pickle是一个高效的对象序列化和反序列化工具。它简化了复杂数据结构的存储和传输,为开发者提供了便利和灵活性。无论是处理基本数据类型还是自定义对象,Python Pickle都能够轻松应对,是Python程序员不可或缺的工具之一。通过序列化和反序列化,我们能够有效地保存和恢复对象的状态,实现数据的持久化和传输。

Post Views: 1,100
编程笔记 Python Pickle

文章导航

Previous post
Next post

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

站内搜索

微信公众号

广告赞助

近期文章

  • 斯坦福 STORM 学习法:用 AI 深度研究一个主题,构建自己的知识体系
  • 如何使用 Claude 将任何知识的学习速度提升 10 倍【译】
  • Excel 根据数值正负自动设置文字颜色:正数红色、负数绿色
  • 2026 年主流跨端开发框架:Flutter、React Native、KMP 怎么选?
  • 2026 年企业级编程技术栈趋势简报
  • 使用 Jev 构建 Harness [译]
  • 2026年FDE(前沿部署工程师)为什么成了香饽饽?
  • 第 7 章 Tool System:给 AI 装上”手和脚”
  • 第 6 章 Context Engineering:Agent 的”工作内存”
  • 第 5 章 主流 AI Agent 架构模式

近期评论

  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 3 章 AI Agent Loop:现代 AI Agent 背后的核心架构》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 4 章 Agent Harness是什么?》
  • 第 4 章 Agent Harness是什么? - 编程开物 发表在《《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 2 章 LLM Application 的基本架构》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 1 章 重新认识 AI Agent》

归档

  • 2026 年 10 月 (2)
  • 2026 年 9 月 (14)
  • 2025 年 8 月 (1)
  • 2025 年 7 月 (1)
  • 2025 年 6 月 (10)
  • 2025 年 5 月 (10)
  • 2025 年 4 月 (5)
  • 2025 年 2 月 (1)
  • 2024 年 12 月 (4)
  • 2024 年 11 月 (7)
  • 2024 年 9 月 (1)
  • 2024 年 8 月 (4)
  • 2024 年 7 月 (1)
  • 2024 年 2 月 (1)
  • 2023 年 12 月 (3)
  • 2023 年 11 月 (6)
  • 2023 年 10 月 (4)
  • 2023 年 9 月 (2)
  • 2023 年 8 月 (38)
  • 2022 年 2 月 (1)
  • 2022 年 1 月 (13)
  • 2021 年 1 月 (1)
  • 2020 年 10 月 (1)
  • 2020 年 1 月 (1)
  • 2014 年 7 月 (2)

分类

  • IT项目管理 (2)
  • 实用技巧 (3)
  • 技术教程 (8)
  • 数据与AI (12)
    • AI基础理论 (1)
    • AI实践应用 (2)
    • 数据工程 (3)
  • 架构设计 (13)
    • AI应用架构设计 (8)
    • 传统应用架构设计 (2)
  • 编程基础 (2)
  • 编程笔记 (88)
  • 行业动态 (19)
©2026 编程开物 | WordPress Theme by SuperbThemes | 沪ICP备17019044号-3