Python
[python] 두 변수의 값 비교 및 같은 객체인지 확인하는 assert문
lim
2022. 9. 29. 21:50
반응형
파이썬을 쓰다보면 두 변수의 값과 가리키는 객체가 같은지를 비교해야 할 떄가 있다.
보통 값을 비교할 떄는 == 을, 객체를 비교할 때는 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]
반응형