织梦网站添加广告位,手机排行榜2021销量排行,做排名优化,网络推广和网站推广Python marshal 模块学习笔记 1. 简介
marshal 是 Python 的内部序列化格式#xff0c;主要用于序列化和反序列化 Python 对象。它是 Python 字节码#xff08;.pyc文件#xff09;使用的序列化格式#xff0c;比 pickle 更原始和受限#xff0c;但也更快速和安全。 http…Python marshal 模块学习笔记 1. 简介
marshal 是 Python 的内部序列化格式主要用于序列化和反序列化 Python 对象。它是 Python 字节码.pyc文件使用的序列化格式比 pickle 更原始和受限但也更快速和安全。 https://docs.python.org/zh-cn/3.9/library/marshal.html?highlightmarshal#module-marshal
2. 核心方法
marshal 模块提供了四个主要方法 marshal.dump(value, file) 将 Python 对象序列化并写入文件需要以二进制写入模式打开文件‘wb’ marshal.load(file) 从文件中读取并反序列化为 Python 对象需要以二进制读取模式打开文件‘rb’ marshal.dumps(value) 将 Python 对象序列化为字节串返回 bytes 类型数据 marshal.loads(bytes) 将字节串反序列化为 Python 对象接收 bytes 类型数据
3. 支持的数据类型
marshal 支持以下 Python 数据类型
None整数 (int)浮点数 (float)复数 (complex)字符串 (str)元组 (tuple)列表 (list)字典 (dict)布尔值 (bool)字节串 (bytes)代码对象 (code object)冻结集合 (frozenset)
4. 不支持的数据类型
marshal 不支持以下类型
自定义类和实例函数和方法模块文件对象套接字对象其他复杂对象
5. 使用示例
5.1 使用 dump/load 操作文件
import marshal# 写入数据
data {name: qifumin, age: 23}
with open(data.marshal, wb) as f:marshal.dump(data, f)# 读取数据
with open(data.marshal, rb) as f:loaded_data marshal.load(f)5.2 使用 dumps/loads 操作字节串
import marshal# 序列化为字节串
data {languages: [Python, Java, Go]}
bytes_data marshal.dumps(data)# 从字节串反序列化
recovered_data marshal.loads(bytes_data)6. 注意事项 版本兼容性 不同 Python 版本之间的 marshal 格式可能不兼容可以通过 marshal.version 查看当前版本号 使用场景 主要用于 Python 内部如.pyc文件不建议用于长期存储或跨版本数据交换 替代方案 一般数据序列化推荐使用 pickle跨语言数据交换推荐使用 json配置文件推荐使用 yaml
7. 优缺点
优点
执行速度快格式简单Python 内置模块无需额外安装
缺点
不支持复杂对象版本兼容性问题不适合长期存储不支持跨语言使用
8. 最佳实践
仅在需要高性能序列化简单数据类型时使用在使用前检查数据类型的兼容性处理文件时使用 with 语句确保正确关闭对于一般用途优先考虑其他序列化方案