1. ホーム
  2. python

[解決済み] id()関数は何に使うのですか?

2022-10-09 04:43:59

質問

私は Python 2 ドキュメント を読み、その中で id() 関数に気づきました。

オブジェクトの "ID "を返します。これは整数(または長整数)で、このオブジェクトが生きている間は一意であり一定であることが保証されています。重複しない寿命を持つ2つのオブジェクトは同じ id() 値を持つことがあります。

CPythonの実装の詳細です。これはメモリ上のオブジェクトのアドレスです。

そこで、実験的に id() をリストで使って実験してみました。

>>> list = [1,2,3]
>>> id(list[0])
31186196
>>> id(list[1])
31907092 // increased by 896
>>> id(list[2])
31907080 // decreased by 12

関数から返される整数は何ですか?C言語のメモリアドレスと同義ですか?もしそうなら、なぜ整数はデータ型のサイズに対応しないのでしょうか?

いつ id() は実際にどのような場面で使われるのでしょうか?

どのように解決するのですか?

あなたの投稿はいくつかの質問を投げかけています。

この関数から返される数値は何ですか?

それは"です。 このオブジェクトが生きている間、一意で一定であることが保証されている整数(または長整数)です。 "です。 (Python標準ライブラリ - 組み込み関数) 一意な番号。それ以上でも以下でもありません。Pythonオブジェクトの社会保障番号や従業員ID番号のようなものだと考えてください。

C言語のメモリアドレスと同じでしょうか?

概念的にはそうですが、どちらもその寿命の間、その宇宙で一意であることが保証されているという点で。そして、Pythonのある特定の実装では、実際に対応するCオブジェクトのメモリアドレスになっています。

もしそうなら、なぜ数はデータ型(私はそれがintであると仮定しています)のサイズによって瞬時に増加しないのでしょうか?

リストは配列ではなく、リスト要素はオブジェクトではなく参照だからです。

本当にいつ id( ) 関数を使うのでしょうか?

ほとんどないですね。2つの参照が同じかどうかは、そのidを比較することでテストできますが is 演算子 は常に推奨されている方法です。 id( ) は、デバッグの場面でのみ本当に役に立ちます。