파이썬의 값 비교방법
'==' : 동등성(Equality)
'is' : 동일성(Identity)
def return_1000():
return 1000
def return_thousand():
return 1000
a = return_1000()
b = return_thousand()
print(a) # 1000
print(b) # 1000
print(id(a)) # 35920704
print(id(b)) # 35920728
print(a is b) # False
print(a == b) # True
객체의 고유값(identity)을 출력하면 다른값이 출력됨('id')
'is' False 반환
'==' True 반환
is를 통한 비교는 그 객체가 할당된 메모리 공간까지 완전히 동일한지를 비교함
(마치 자바스크립트에서 '==='를 쓰는 것같은?)
두 객체가 id(메모리 공간)까지 완전 동일한지 비교 하려면 'is'
두 객체가 단순히 가지고 있는 값만 동일한지 비교하려면 '=='
True, False나 None같은 값들은 최초 선언시 한 번만 메모리에 할당하고 그 이후에는 최초에 선언된 값을 그대로 사용하도록 한다. 그 말은 True, False를 is, == 로 비교 해도 같게 나온다
is 를 사용하는것이 성능상 우위를 보인다 (단순비교일땐 == 이자만 is로 비교 가능한 상황이면 is를 쓰자)