ホームページ > バックエンド開発 > Python チュートリアル > Python 2.x でオブジェクトのシリアル化に pickle モジュールを使用する方法

Python 2.x でオブジェクトのシリアル化に pickle モジュールを使用する方法

WBOY
リリース: 2023-07-30 18:07:58
オリジナル
1184 人が閲覧しました

Python は、開発者がさまざまなタスクを完了するのに役立つ多くの組み込みモジュールとツールを提供する、強力で使いやすいプログラミング言語です。一般的に使用されるモジュールの 1 つは pickle です。これを使用すると、Python オブジェクトをシリアル化および逆シリアル化用のバイト ストリームに変換できます。この記事では、Python 2.x でオブジェクトのシリアル化に pickle モジュールを使用する方法を紹介し、いくつかのコード例を示します。

1. オブジェクトのシリアル化とは

オブジェクトのシリアル化とは、オブジェクトをさまざまな環境に送信および保存できるように、オブジェクトをバイト ストリームに変換するプロセスを指します。 Python では、オブジェクトはカスタム クラスや組み込みクラスを含む任意のクラスのインスタンスにすることができます。オブジェクトのシリアル化の主な目的は、メモリ内のオブジェクトをディスクに保存したり、ネットワーク経由で他のコンピュータに送信したりすることです。逆シリアル化は、バイト ストリームをオブジェクトに変換して戻すプロセスです。

2. オブジェクトのシリアル化に pickle モジュールを使用する

Python 2.x では、オブジェクトのシリアル化と逆シリアル化に pickle モジュールを使用できます。このモジュールは、dump() とload() という 2 つの主要な関数を提供します。 dump() 関数はオブジェクトをバイト ストリームにシリアル化し、ファイルに保存します。一方、load() 関数はファイルからバイト ストリームをロードし、オブジェクトに逆シリアル化します。

以下は、オブジェクトのシリアル化と逆シリアル化に pickle モジュールを使用する方法を示す簡単な例です。

import pickle

# 定义一个类
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# 创建一个对象
person = Person('张三', 18)

# 将对象序列化并保存到文件中
with open('person.pickle', 'wb') as file:
    pickle.dump(person, file)

# 从文件中加载字节流并反序列化为对象
with open('person.pickle', 'rb') as file:
    loaded_person = pickle.load(file)

# 打印反序列化后的对象属性
print("姓名:", loaded_person.name)
print("年龄:", loaded_person.age)
ログイン後にコピー

上の例では、name と age の 2 つの属性を含む Person という名前のクラスを定義しました。 Person オブジェクトを作成し、それをバイト ストリームにシリアル化し、ファイル person.pickle に保存します。次に、ファイルからバイト ストリームを読み込み、オブジェクトに逆シリアル化して、プロパティ値を出力します。

3. 注意事項

pickle モジュールをオブジェクトのシリアル化に使用する場合は、次の点に注意する必要があります:

  1. pickle は Python 固有のオブジェクトのみをシリアル化できます。 type は、カスタム クラス メソッド (つまり、クラスで定義された関数) と静的メソッドのシリアル化をサポートしません。
  2. カスタム クラス オブジェクトをシリアル化する場合は、クラスによって定義されたコードが逆シリアル化中にも使用可能であることを確認する必要があります。つまり、Python がオブジェクトの型を正しく識別できるように、逆シリアル化する前にクラスの定義をインポートする必要があります。
  3. pickle は安全なプロトコルではないため、信頼できるデータにのみ使用してください。信頼できないデータを扱う場合、コードインジェクションやリモートコード実行などのセキュリティ問題が発生する可能性があります。
  4. シリアル化されたオブジェクトが変更されると、逆シリアル化中にバージョンの互換性の問題が発生する可能性があります。
  5. pickle モジュールは Python でのみ使用でき、他のプログラミング言語との対話はサポートされていません。

概要:

この記事では、Python 2.x でオブジェクトをシリアル化するために pickle モジュールを使用する方法を簡単に紹介します。オブジェクトのシリアル化の概念と、pickle の dump() 関数とload() 関数を使用してオブジェクトのシリアル化と逆シリアル化を実装する方法について学びました。同時に、pickle モジュールをより効果的に使用するためのいくつかの注意事項についても説明しました。

Python 3.x の pickle モジュールは 2.x バージョンといくつかの違いがありますが、使用方法と概念のほとんどは類似しています。したがって、この記事で紹介する内容は、Python 3.x の pickle モジュールの参考値でもあります。

以上がPython 2.x でオブジェクトのシリアル化に pickle モジュールを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート