Есть ли разница между "foo is None" и "foo == None"? - PullRequest
211 голосов
/ 25 августа 2008

Есть ли разница между:

if foo is None: pass

и

if foo == None: pass

Соглашение, которое я видел в большинстве кодов Python (и кода, который я сам пишу), является первым, но недавно я наткнулся на код, который использует последний. Ни один не является экземпляром (и единственным экземпляром, IIRC) NoneType, так что это не должно иметь значения, верно? Есть ли обстоятельства, при которых это может произойти?

Ответы [ 12 ]

1 голос
/ 27 марта 2011

Вывод Джона Мачина о том, что None является синглтоном, является заключением, подкрепленным этим кодом.

>>> x = None
>>> y = None
>>> x == y
True
>>> x is y
True
>>> 

Поскольку None является одиночным, x == None и x is None будут иметь одинаковый результат. Однако, по моему эстетическому мнению, x == None лучше.

0 голосов
/ 03 апреля 2019
a is b # returns true if they a and b are true alias
a == b # returns true if they are true alias or they have values that are deemed equivalence 


a = [1,3,4]
b = a[:] #creating copy of list
a is b # if gives false
False
a == b # gives true
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...