"없음"과 "== 없음"의 차이점은 무엇입니까?
나는 최근에 이 구문을 발견했는데, 나는 그 차이를 알지 못한다.
차이점을 알려주시면 감사하겠습니다.
정답은 여기에 설명되어 있습니다.
견적 내용:
클래스는 임의의 방법으로 비교를 구현할 수 있으며, 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
, 그들은 항상 똑같을 것입니다.is
True가 반환됩니다.
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
'programing' 카테고리의 다른 글
현재 날짜 + 7일 반환 (0) | 2022.10.19 |
---|---|
사전에 값이 있는지 확인하는 방법 (0) | 2022.10.19 |
부동 값에 접미사 'f'를 사용하는 이유는 무엇입니까? (0) | 2022.10.19 |
함수가 발신자가 인식하는 일부 인수를 변경할 수 있지만 다른 인수는 변경할 수 없는 이유는 무엇입니까? (0) | 2022.10.19 |
(C#과 같이) PHP로 스태틱클래스를 만들 수 있습니까? (0) | 2022.10.19 |