Python - 변수 할당의 개념

Language/Python 2016.08.08 12:13 posted by TechNote.kr


 python에서는 변수에 값을 할당하면 object를 생성해서 값을 해당 저장한 후 변수는 해당 object의 메모리 주소를 의미하는 id값을 가지게 된다.


1이라는 값을 가지고 있는 object(id 23282008)를 가리키는 변수를 도식화 하면 다음과 같다.


>>> a = 1
>>> id(a)
23282008


만약 같은 값을 가지게 된다면 같은 object를 가리키게 될 수도 있다. 

>>> a = b = 100
>>> id(a)
23283616
>>> id(b)
23283616

위 경우는 서로 다른 변수 이름을 가진 a, b이지만 id 23283616 object를 동시에 가리키고 있다. 


이 상태에서 a에 다른 값을 할당하면 아래와 같이 다른 object를 가리키게 된다.

>>> a = 50
>>> id(a)
23282824
>>> id(b)
23283616
>>> print a, b
50 100


주의해야 할 점


 이와 같이 변수가 동작하는 상황에서 주의해야 할 점이 하나 있는데, 같은 값을 가졌다고 해서 모두 동일한 object를 가리키는 것은 아니라는 것이다. (물론 같은 값을 가질 수도 있다.


>>> a = 12345
>>> b = 12345
>>> id(a)
23564368
>>> id(b)
23564584
>>> a = 1
>>> b = 1
>>> id(a)
23282008
>>> id(b)
23282008

위와 같이 같은 object 를 가리킬 수도 가리키지 않을 수도 있다. 


따라서 두 변수를 비교해야 할 경우 해당 값을 비교하는 것인지 아니면 해당 변수가 가리키는 object의 id를 비교하는 것인지 명확히 해야할 필요가 있다. 

>>> a = 12345
>>> b = 12345
>>> id(a)
23564368
>>> id(b)
23564584
>>> a is b
False
>>> a == b
True

 object의 id를 비교할 경우 "is"를 사용하고, 해당 값을 비교할 경우 "=="을 사용하게 되는데 그 값이 다르게 나타난다.

저작자 표시 비영리 변경 금지
신고