2016-11-05 4 views
0

私はpythonでid()に関する疑いがあります。pythonのid()について

>>> x=2 
>>> y=2 
>>> id(x) 
94407182328128 
>>> id(y) 
94407182328128 

しかし、私は、リストに同じことを行うならば、それはなぜそうなのか、私には、異なるIDの

>>> a=[1,2,3] 
>>> b=[1,2,3] 
>>> id(a) 
139700617222048 
>>> id(b) 
139700617135528 

を取得しますか? int型の場合、IDが同じで、なぜリストが異なるのですか?

ありがとうございました。

+0

詳細は、この華麗な映像で示されています。 'a'と' b'は同じオブジェクトを指しません。たとえば、Javaを使用している場合、 'int x = 2; int y = 2'ならば、 'x == y'はメモリ内で同じアドレスを持つので真です。しかし、もしあなたが 'int [] x = {1,2,3}; int [] y = {1,2,3}; '' x == y'はメモリ内の異なるアドレスを持つため、falseになります。 –

+0

http://stackoverflow.com/questions/306313/is-operator-behaves-unexpectedly-with-integersを参照してください。 – pynexj

答えて

0

PythonにはCのような変数はありません。Cでは変数は単なる名前ではなく、ビットの集合です。変数はメモリのどこかに存在します。 Python変数には、オブジェクトに添付されたタグがあります。

例:

Tags exaple image

リストの一部について:

あなたは新しい参照を作成しました。 'X'と `が同じオブジェクトを参照y`ので

https://www.youtube.com/watch?v=EnLAEE1C7X4

関連する問題