programing

"없음"과 "== 없음"의 차이점은 무엇입니까?

kingscode 2022. 10. 19. 21:26
반응형

"없음"과 "== 없음"의 차이점은 무엇입니까?

나는 최근에 이 구문을 발견했는데, 나는 그 차이를 알지 못한다.

차이점을 알려주시면 감사하겠습니다.

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

견적 내용:

클래스는 임의의 방법으로 비교를 구현할 수 있으며, 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싱글톤 오브젝트(존재하는 것은 1개뿐)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"

[없음(None)]과 비교하고 있는 항목에 따라 다릅니다.일부 클래스에는 다음을 처리하는 사용자 지정 비교 메서드가 있습니다.== None와는 다르게is None.

특히 출력은a == None 는 부울이 아니어도 됩니다.이것은 버그의 빈번한 원인입니다.

특정 예에서는 numpy 배열을 사용합니다.==비교는 요소별로 구현됩니다.

import numpy as np
a = np.zeros(3) # now a is array([0., 0., 0.])
a == None #compares elementwise, outputs array([False, False, False]), i.e. not boolean!!!
a is None #compares object to object, outputs False

numpy를 쓰면

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

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

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

반응형