본문 바로가기

Python

[python] 두 변수의 값 비교 및 같은 객체인지 확인하는 assert문

반응형

 

파이썬을 쓰다보면 두 변수의 값과 가리키는 객체가 같은지를 비교해야 할 떄가 있다.

보통 값을 비교할 떄는 == 을, 객체를 비교할 때는 is를 쓴다. 

 

>>> a = [1,2,3]
>>> b = [1,2,3]
>>> a is b
False
>>> a == b
True

 

a와 b 리스트의 값은 같지만, 두 변수는 가리키는 객체가 다르다.

 

 

 

만약 '두 변수의 값이 같고 두 객체는 서로 달라야 한다'라는 조건이 필요하면 아래와 같이 assert를 통해 해당 경우가 아닐떄 에러를 유발시킬 수 있다.

 

 

>>> assert b == a and b is not a
>>> a = [1,2,3]
>>> b= a
>>> assert b == a and b is not a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError



>>> a[2] = 4
>>> b
[1, 2, 4]

 

b에 a 값을 그대로 넣었으므로 a와 b는 같은 객체이다. 즉 a를 변경하면 이에 대한 변경이 b에도 반영된다. 참고로 값은 같고 완전히 다른 객체로 만들고 싶다면 슬라이싱을 활용하면 된다.

 

 

>>> a = [1,2,3]
>>> b = a[:]
>>> assert b == a and b is not a


>>> a[2] = 4
>>> b
[1, 2, 3]
반응형