Давайте посмотрим, что вы делаете:
# Смотрим идентификатор объекта (число)
id(False)
=> 139746282587104
# Записываем в переменную идентификатор объекта (число)
x = id(False)
print(x)
=> 139746282587104
# Сравниваем идентификатор объекта сам с собой как объект.
# Смысл данного действия не очень понятен.
x is x
=> True
# Сравниваем объект False и число (идентификатор объекта), что не имеет смысла.
False is x
=> False
# Сравниваем идентификатор объекта (число) и идентификатор объекта в переменной (число) как объекты.
# Равенство объектов для одинаковых по значению чисел не гарантируется.
id(False) is x
=> False
# Сравниваем идентификатор объекта False и идентификатор идентификатора объекта False как объекты.
# Данное сравнение не имеет смысла.
id(False) is id(x)
=> False
Имеет смысл сравнивать id объектов по равенству или сравнивать сами объекты через is, но сравнивать идентификаторы идентификаторов по равенству значений или сравнивать идентификаторы через is, или идентификатор объекта с самим объектом - не имеет смысла.
id(False) is id(False), идентификатор это внутренняя ссылка на объект, каждый раз вызываяid(), похоже, создается новый объект типаint, который хранит значение идентификатора, поэтому сравнивать черезisне хорошо, используйте тогда оператор==, который сравнит по значению.type(id(False)) is type(id(False))равны, потому чтоtype(id(False))вернет типint, а у каждого типа идентификатор уникальный и неповторимый – gil9red Jul 11 '17 at 05:51Falseновый создается, а приid(False)создается новый объект типаint, который изid(False)возвращается – gil9red Jul 11 '17 at 11:00id(False)возвращает значение идентификатораFalse, например123456(типint), а123456это объект со своими методами и свойствами и у него тоже есть идентификатор и делаяid(False) is id(False)сравниваются не идентификаторыFalse. Понятно? – gil9red Jul 11 '17 at 12:07