[Python] Equality vs Identity(동등성 vs 동일성)

2806 단어 pythonpython

동등성 vs 동일성

파이썬의 값 비교방법

'==' : 동등성(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를 쓰자)

좋은 웹페이지 즐겨찾기