3

Python の shelve モジュールではすべてのキーが文字列である必要があり、さまざまな回避策があることが十分に文書化されています (ここここのスレッドを参照)。私の質問は、シェルブが文字列キーを必要とするのはなぜですか? 他のオブジェクトをキーとして使用する dict をピクルすることができ、シェルブがフードの下でピクルを使用することを考えると、そのようなキー自体をシェルブで処理できないのはなぜですか? 文字列キーを使用すると、永続オブジェクト全体を書き換えるよりも、永続オブジェクトの一部のみを更新する方がはるかに簡単になりますか (そうであれば、その理由)?

4

2 に答える 2

3

内部では、shelve モジュールはストレージに bsddb、gdbm、または dbm のいずれかを使用し、文字列キーのみをサポートするためです。

他のオブジェクトをキーとして使用する dict をピクルできるのは正しいですが、1 つのキーが変更されると、ストレージ全体をフラッシュする必要があります。このようなキー値データベースを使用することで、変更された値のみがフラッシュされます。

于 2013-11-01T20:45:49.303 に答える