본문 바로가기
파이썬

파이썬 Python 없음 비교 : "is"또는 ==를 사용해야합니까?

by º기록 2021. 1. 28.
반응형

내 편집기는 my_var == None 을 비교할 때 경고를 표시하지만 my_var is None 을 사용할 때는 경고가 없습니다.

Python 셸에서 테스트를 수행하고 둘 다 유효한 구문인지 확인했지만 내 편집기는 my_var is None 이 선호된다고 말하는 것 같습니다.

이것이 사실입니까? 그렇다면 그 이유는 무엇입니까?

 

해결 방법

 

객체의 ID 를 확인하려면 is 를 사용하세요 (예 : var None 인지 확인). 같음 을 확인하려면 == 를 사용하세요 (예 : var 3 과 같습니까?).

my_var == None True 를 반환하는 사용자 정의 클래스를 가질 수 있습니다.

예 :

class Negator(object):
    def __eq__(self,other):
        return not other

thing = Negator()
print thing == None    #True
print thing is None    #False

is 는 개체 ID 를 확인합니다. None 개체는 1 개뿐이므로 my_var is None 을 수행하면 실제로 동일한 개체인지 확인합니다 (단지 동등 개체)

즉, == 는 동등성 (객체에서 객체로 정의 됨)을 확인하는 반면 is 는 객체 ID를 확인합니다.

lst = [1,2,3]
lst == lst[:]  # This is True since the lists are "equivalent"
lst is lst[:]  # This is False since they're actually different objects

 

참조 페이지 https://stackoverflow.com/questions/14247373

 

 

반응형

댓글