파이썬

[파이썬] is vs == 차이는?

앤테바 2021. 11. 20. 09:30
반응형

== (equality comparison)

- Equality Operator

- operands의 value의 동일함을 비교함

 

is (Identity comparison)

- operands가 가리키는(refer) 오브젝트가 동일한지 체크함

 

== 예시 코드

list1 = [1, 2, 3]
list2 = [1, 2, 3]

if list1 == list2:
    print("true")
else:
    print("false")
    

# output
# list1과 list2의 values가 모두 동일하므로
true

is 예시 코드

list1 = [1, 2, 3]
list2 = [1, 2, 3]

if list1 is list2:
    print("true")
else:
    print("false")
    
 # output
 # list1과 list2는 다른 객체를 가르키므로
 false

==, is 예시

list1 = [1, 2, 3]
list2 = list1[:] # make a new copy

if list1 == list2:
    print("true")
else:
    print("false")

if list1 is list2:
    print("true")
else:
    print("false")
    

# output
# list2는 list1으로 부터 복사되어서 values는 동일하지만 메모리의 별도의 공간을 갖는다
true
false

 

Summary

- is와 ==는 다르다

- is는 동일 메모리 공간을 가르키는지 체크

- ==는 가르키는 메모리 공간의 데이터가 동일한지 체크

반응형