Ключевое слово is
в python используется для проверки, если две переменные ссылаются на один и тот же объект. Возвращает True
, если две переменные ссылаются на один и тот же объект, в противном случае возвращается False
.
В качестве примера рассмотрим class
с именем A
:
class A:
pass
Случай 1:
x = A() #--> create instance of class A
y = A() #--> create instance of class A
>>> x is y
>>> False
Случай 2:
x = A() #--> create instance of class A
y = x #--> here y refers to the instance of x
>>> x is y
>>> True
В основном две переменные ссылаются на один и тот же объект, если они ссылаются на одну и ту же ячейку памяти. Вы можете проверить идентичность переменной с помощью встроенной функции в python, которая называется id()
, эта функция возвращает идентификатор объекта (адрес объекта в памяти).
- In Случай 1
id(x)
не равен id(y)
, следовательно, x is y
возвращает False
. - В Случай 2
id(x)
равен id(y)
, что означает, что и x
, и y
относятся к одному и тому же объекту в памяти , следовательно, x is y
возвращает True
.
Теперь перейдем к вашему вопросу,
def foo(el):
return (el is 0.0)
В функции foo
el is 0.0
возврат False
потому что каждая из двух сущностей el
и 0.0
относится к разным местам в памяти. Вы можете проверить этот факт, сравнив id(el) == id(0.0)
, который возвращает False
.