Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách serialize (직렬화) class Python với pickle

Serialization và deserialization là khía cạnh thường gặp trong chương trình Python không tầm thường. Lưu file, đọc config, xử lý HTTP request đều liên quan đến serialization.

Có nhiều scheme, format, protocol để stream object Python và khôi phục lại. Lựa chọn ảnh hưởng đến tốc độ và bảo mật.

Ví dụ với pickle

import pickle

foo = dict(
    int_list=[3, 4, 5],
    text='Hello World',
    number=9.99,
    boolean=False,
    none=None
)

# Serialize thành bytes
pickled = pickle.dumps(foo)
print(pickled)

# Sử dụng protocol cao nhất (hiệu quả hơn)
pickled_high = pickle.dumps(foo, protocol=pickle.HIGHEST_PROTOCOL)
print(pickled_high)

# Deserialize
restored = pickle.loads(pickled)
print(restored)

Lưu ý quan trọng

  • Bảo mật: pickle không an toàn với dữ liệu không tin cậy (có thể thực thi code tùy ý). Chỉ dùng với dữ liệu tin cậy.
  • Thay thế an toàn: JSON (json), MessagePack, hoặc marshal cho dữ liệu đơn giản.
  • Class cũng là object Python, có thể pickle được (miễn là class có thể import được khi unpickle).