0

Python 2.7では、OrderedDictでこの動作をしています

from collections import *
id(OrderedDict())
42101904
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680

なんで?

4

2 に答える 2

4

これは に固有のものOrderedDict()ではありません。Python は、解放されたメモリを再利用して新しいオブジェクトを格納しています

id()関数のドキュメントから:

オブジェクトの「アイデンティティ」を返します。これは、このオブジェクトの有効期間中に一意で一定であることが保証されている整数 (または長整数)です。有効期間が重複しない 2 つのオブジェクトは、同じid()値を持つ場合があります。

callのためだけにOrderedDict()オブジェクトを作成しています。その呼び出しが完了すると、オブジェクトを参照するものは他にありません。したがって、オブジェクトは再びメモリから削除され、次に実行すると、まったく同じメモリ位置に新しいオブジェクトが作成されます。id()id(OrderedDict())

于 2014-02-10T10:53:11.320 に答える
1

これが id() 関数の機能です。オブジェクトの一意の識別子を返します。複数のオブジェクトを作成しているため、異なる ID が取得されます。

于 2014-02-10T10:53:45.347 に答える