ホームページ  >  記事  >  バックエンド開発  >  Pythonにおけるシリアル化とは何ですか? (分析例)

Pythonにおけるシリアル化とは何ですか? (分析例)

乌拉乌拉~
乌拉乌拉~オリジナル
2018-08-23 13:38:222806ブラウズ

次の記事では、Python における シリアライゼーションとは何なのかを見てみましょう。 Python シリアル化 と、Python プログラミングにおいて Python シリアル化が果たせる役割について学びます。

プログラムの実行中、すべての変数はメモリ内にあります。たとえば、辞書を定義します:

d = dict(name='Bob', age=20, score=88)

名前を「Bill」に変更するなど、いつでも変数を変更できます。 ' しかし、プログラムが終了すると、変数によって占有されていたすべてのメモリがオペレーティング システムによって再利用されます。変更された「Bill」がディスクに保存されていない場合、次回プログラムを再度実行するときに、変数は再び「Bob」に初期化されます。

変数をメモリから保存可能または転送可能に変更するプロセスを Python ではピクルと呼びます。他の言語でもシリアル化、マーシャリング、フラット化などと呼ばれます。同じ意味です。

シリアル化後、シリアル化されたコンテンツをディスクに書き込んだり、ネットワーク経由で他のマシンに送信したりできます。

次に、シリアル化されたオブジェクトから変数の内容をメモリに再読み取りすることを逆シリアル化、つまりアンピックリングと呼びます。

Python は、シリアル化を実装するための pickle モジュールを提供します。

まず、オブジェクトをシリアル化してファイルに書き込もうとします。

>>> import pickle
>>> d = dict(name='Bob', age=20, score=88)
>>> pickle.dumps(d)
b'\x80\x03}q\x00(X\x03\x00\x00\x00ageq\x01K\x14X\x05\x00\x00\x00scoreq\x02KXX\x04\x00\x00\x00nameq\x03X\x03\x00\x00\x00Bobq\x04u.'

pickle.dumps() メソッドは、オブジェクトをバイトにシリアル化し、このバイトを書き込むことができます。書類。または、別のメソッド pickle.dump() を使用して、オブジェクトを直接シリアル化し、ファイルのようなオブジェクトに書き込みます。

>>> f = open('dump.txt', 'wb')
>>> pickle.dump(d, f)
>>> f.close()

書き込まれた dump.txt ファイルを見てください。乱雑なコンテンツの束です。これらはオブジェクトの内部です。 Python によって保存された情報。

オブジェクトをディスクからメモリに読み取る場合は、まずコンテンツをバイトに読み取り、次に pickle.loads() メソッドを使用してオブジェクトを逆シリアル化するか、pickle.load を直接使用します。 () メソッドは、ファイルのようなオブジェクトからオブジェクトを直接逆シリアル化します。別の Python コマンド ラインを開いて、保存したオブジェクトを逆シリアル化します。

>>> f = open('dump.txt', 'rb')
>>> d = pickle.load(f)
>>> f.close()
>>> d
{'age': 20, 'score': 88, 'name': 'Bob'}

変数の内容が戻りました。

もちろん、この変数は元の変数とはまったく関係がなく、内容が同じであるだけです。

Pickle の問題は、他のすべてのプログラミング言語に特有のシリアル化の問題と同じです。つまり、この問題は Python でのみ使用でき、Python の異なるバージョンには相互互換性がない可能性があります。したがって、Pickle を使用できるのは重要でないデータのみを保存することであり、データが正常に逆シリアル化されなくても問題ありません。

以上がこの記事の内容です、この記事では主に

pythonシリアライゼーションの関連知識を紹介しますので、上記の内容を理解するために活用していただければ幸いです。この記事で説明したことがあなたのお役に立ち、Python の学習が容易になることを願っています。

関連知識の詳細については、php 中国語 Web サイトの

Python チュートリアル 列を参照してください。

以上がPythonにおけるシリアル化とは何ですか? (分析例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。