pickle が使うデータ形式は Python 特有です。そうする ことで、XDR のような 外部の標準が持つ制限 (例えば XDR ではポインタの共有を表現できません) を課せられることがないという利点があります; しかしこれは Python で書かれていないプログラムが pickle 化された Python オブジェクトを 再構築できない可能性があることを意味します。
標準では、pickle データ形式では印字可能な ASCII 表現を 使います。これはバイナリ表現よりも少しかさばるデータになります。 印字可能な ASCII の利用 (とその他の pickle 表現形式が 持つ特徴) の大きな利点は、デバッグやリカバリを目的とした場合に、 pickle 化されたファイルを標準的なテキストエディタで読めるという ことです。
現在、pickle化に使われるプロトコルは、以下の 3 種類です。
詳細は PEP 307 を参照してください。
protocol を指定しない場合、プロトコル 0 が使われます。protocol に負値か HIGHEST_PROTOCOL を指定すると、有効なプロトコルの内、もっとも高いバージョンのものが使われます。
バージョン 2.3 で 変更 された仕様: protocol パラメータが導入されました。
protocol version >= 1 を指定することで、少しだけ効率の高いバイナリ 形式を選ぶことができます。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。