``シェルフ (shelf, 棚)'' は辞書に似た永続性を持つオブジェクトです。 ``dbm'' データベースとの違いは、シェルフの値 (キーではありません!) は実質上どんな Python オブジェクトにも -- pickle モジュール が扱えるなら何でも -- できるということです。これにはほとんどの クラスインスタンス、再帰的なデータ型、沢山の共有されたサブオブジェクト を含むオブジェクトが含まれます。キーは通常の文字列です。
filename[,flag='c'[,protocol=None [,writeback=False [,binary=None ]]]]) |
デフォルトでは、値を整列化する際にはバージョン 0 の pickle 化が 用いられます。pickle 化プロトコルのバージョンは protocol パラメタで指定することができます。 バージョン 2.3 で 変更 された仕様: protocol パラメタが追加されました。binary パラメタは撤廃され、 以前のバージョンとの互換性のためにのみ提供されています
デフォルトでは、永続的な辞書の可変エントリに対する変更をおこなっても、 自動的にファイルには書き戻されません。オプションの writeback パラメタが True に設定されていれば、アクセスされたすべての エントリはメモリ上にキャッシュされ、ファイルを閉じる際に書き戻されます; この機能は永続的な辞書上の可変の要素に対する変更を容易にしますが、 多数のエントリがアクセスされた場合、膨大な量のメモリがキャッシュの ために消費され、アクセスされた全てのエントリを書き戻す (アクセスされた エントリが可変であるか、あるいは実際に変更されたかを決定する方法は 存在しないのです) ために、ファイルを閉じる操作を非常に低速にしてしまいます。
shelve オブジェクトは辞書がサポートする全てのメソッドをサポートしています。 これにより、辞書ベースのスクリプトから永続的な記憶媒体を必要とする スクリプトに容易に移行できるようになります。