[解決済み] id()関数は何に使うのですか?
質問
私は
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( )
は、デバッグの場面でのみ本当に役に立ちます。
関連
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] __init__.py は何のためにあるのですか?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] 辞書のキーと値を交換するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 「is" 演算子が整数に対して予期せぬ振る舞いをする。
-
[解決済み】シャローコピー、ディープコピー、通常の割り当て操作の違いは何ですか?
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] Python Empty Generator 関数