반응형
내 편집기는 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
반응형
'파이썬' 카테고리의 다른 글
파이썬에서 한 줄의 코드에 n 개의 문자열을 어떻게 생성합니까? (0) | 2021.01.28 |
---|---|
파이썬 Python으로 종속성 그래프 작성 (0) | 2021.01.28 |
파이썬에서 버튼 크기를 어떻게 변경합니까? (0) | 2021.01.28 |
파이썬 교차 모듈 변수를 만드는 방법은 무엇입니까? (0) | 2021.01.28 |
파이썬 Django의 사용자 지정 관리자에서 DoesNotExist 예외 잡기 (0) | 2021.01.28 |
댓글