В чем разница между "None" и "== None"

Недавно я встретил этот синтаксис, я не знаю разницы.

Я был бы признателен, если бы кто-то мог сказать мне разницу.

Ответ 1

Ответ объясняется здесь.

Цитата:

Класс свободен для реализации сравнение любым способом, который он выбирает, и это может выбрать сравнение с Никто не означает что-то (что на самом деле имеет смысл; если кто-то сказал вам реализовать объект None из царапины, как еще вы его получите сравните Истину против себя?).

Практически говоря, нет большой разницы, поскольку пользовательские операторы сравнения встречаются редко. Но вы должны использовать is None как общее правило.

Ответ 2

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

print(foo==None)
# True

print(foo is None)
# False

Ответ 3

В этом случае они одинаковы. 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, они всегда будут одинаковыми, а is вернет True.

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

Ответ 4

Если вы используете numpy,

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

предоставит вам ошибку, когда numpy проведет элементное сравнение