답변 1
0
파이썬에서 is
키워드는 같은 객체인 경우에는 참, 아닌 경우 거짓으로 판단합니다.
내용이 같아도 다른 객체(주소)를 참조하고 있는 경우에는 False를 반환합니다.
외우기 쉬운 방법은, 아예 =으로 할당하지 않고 새로 만든 것들은 False라고 생각하는 것입니다.
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True, a와 b의 값이 같기 때문에
print(a is b) # False, a와 b는 서로 다른 객체이기 때문에
c = a
print(a == c) # True, a와 c의 값이 같기 때문에
print(a is c) # True, a와 c는 동일한 객체이기 때문에
아예 새로운 변수에 할당하지 않는 한, 새로운 객체가 태어났다고 생각하시면 됩니다.
그런데, 정수형하고 문자열은 is로 해도 true가 나옵니다.
a=10, b=10
c="hello", d="hello"
여기서 a, b와 c, d를 is 비교하면 true 나옵니다.
a = 100
b = 100
print(a is b) # True
c = "hello"
d = "hello"
print(c is d) # True
이 경우 말고 리스트인 경우에는 false가 나온다고 보시면 됩니다.
감사합니다