Python 2.7では、OrderedDictでこの動作をしています
from collections import *
id(OrderedDict())
42101904
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
なんで?
Python 2.7では、OrderedDictでこの動作をしています
from collections import *
id(OrderedDict())
42101904
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
なんで?
これは に固有のものOrderedDict()
ではありません。Python は、解放されたメモリを再利用して新しいオブジェクトを格納しています。
オブジェクトの「アイデンティティ」を返します。これは、このオブジェクトの有効期間中に一意で一定であることが保証されている整数 (または長整数)です。有効期間が重複しない 2 つのオブジェクトは、同じ
id()
値を持つ場合があります。
callのためだけにOrderedDict()
オブジェクトを作成しています。その呼び出しが完了すると、オブジェクトを参照するものは他にありません。したがって、オブジェクトは再びメモリから削除され、次に実行すると、まったく同じメモリ位置に新しいオブジェクトが作成されます。id()
id(OrderedDict())
これが id() 関数の機能です。オブジェクトの一意の識別子を返します。複数のオブジェクトを作成しているため、異なる ID が取得されます。