# 11 `pickletools` -- pickle 開発者のためのツール群

バージョン 2.3 で 新たに追加 された仕様です。

このモジュールには、`pickle` モジュールの詳細に関わる 様々な定数や実装に関する長大なコメント、そして pickle 化されたデータ を解析する上で有用な関数をいくつか定義しています。このモジュールの内容は `pickle` および `cPickle` の実装に関わっている Python core 開発者にとって有用なものです; 普通の `pickle` 利用者に とっては、`pickletools` モジュールはおそらく関係ないものでしょう。

`dis`( | pickle[, out=None, memo=None, indentlevel=4])

  pickle をシンボル分解 (symbolic disassembly) した内容を ファイル類似オブジェクトout (デフォルトでは`sys.stdout`) に出力します。pickle は文字列にもファイル類似オブジェクトにも できます。memo は Python 辞書型で、 pickle のメモに使われます。 同じ pickler の生成した複数の pickle 間にわたってシンボル分解を行う 場合に使われます。ストリーム中で`MARK` opcode で表される 継続レベル (successive level) はindentlevel に指定したスペース 分インデントされます。

`genops`( | pickle)

  pickle 内の全ての opcode を取り出すイテレータを返します。このイテレータは `(opcode, arg, pos)` の三つ組みからなる配列を 返します。 opcode は `OpcodeInfo` クラスのインスタンスのクラスです。 arg は opcode の引数としてデコードされた Python オブジェクトの 値です。pos は opcode の場所を表す値です。 pickle は文字列でもファイル類似オブジェクトでもかまいません。