Pythonのid関数の挙動が理解できません。
以下の話はCPythonに限って頂いて構いません。
背景
Pythonが変数をどのように扱っているかを調べるため、変数のアドレスを調べたいです。
調べてみたところ、Pythonではid関数がそれに近いことをしてくれる(というかそれくらいしか出来ない)と知り、試しています。
調べたこと・理解できないこと
Pythonのオフィシャルドキュメントでは、id関数について、
Return the “identity” of an object. This is the address of the object in memory.
と記載されています。
しかし、もしid関数がメモリ上のオブジェクトのアドレス番地(それそのものでなかったとしても、それに準ずるもの)を返すのだとすれば、
以下の挙動が納得できません。
python
1#!/usr/bin/env python 2# coding: utf-8 3a = 3 4b = 3 5print(id(a) == id(b)) # True!?
変数a
とb
はメモリ上では明らかに異なる番地に作成されているはずです。
id関数は実際のところ、一体何を指しているのでしょうか。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/01 12:19
2019/06/01 12:24