IT

"is None"과 "== None"의 차이점은 무엇입니까

lottoking 2020. 3. 24. 08:13
반응형

"is None"과 "== None"의 차이점은 무엇입니까


나는 최근 에이 구문을 보았습니다. 차이를 알지 못합니다.

누군가가 그 차이를 말해 줄 수 있다면 고맙겠습니다.


대답은 여기 에 설명되어 있습니다 .

인용 :

클래스는 원하는 방식으로 비교를 자유롭게 구현할 수 있으며, None과 비교할 수 있습니다 (실제로 의미가 있습니다. 누군가가 None 객체를 처음부터 구현하도록 지시 한 경우 True를 비교하는 방법 그 자체로?).

실제로 말하면, 커스텀 비교 연산자가 드물기 때문에 큰 차이가 없습니다. 그러나 is None일반적인 규칙으로 사용해야합니다 .


class Foo:
    def __eq__(self,other):
        return True
foo=Foo()

print(foo==None)
# True

print(foo is None)
# False

이 경우에는 동일합니다. None은 단일 객체입니다 (단 하나만 존재합니다 None).

is 객체가 동일한 객체인지 확인하고 ==는 동일한 객체인지 확인합니다.

예를 들면 다음과 같습니다.

p = [1]
q = [1]
p is q # False because they are not the same actual object
p == q # True because they are equivalent

그러나 하나만 있기 때문에 None항상 동일하며 isTrue를 반환합니다.

p = None
q = None
p is q # True because they are both pointing to the same "None"

numpy를 사용하면

if np.zeros(3)==None: pass

numpy가 요소별로 비교할 때 오류가 발생합니다.

참고 URL : https://stackoverflow.com/questions/3257919/what-is-the-difference-between-is-none-and-none

반응형