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