¿Qué hace el operador 'is' en Python?

Estaba (tal vez erróneamente) pensando queis El operador está haciendo una comparación id ().

>>> x = 10
>>> y = 10
>>> id(x)
1815480092
>>> id(y)
1815480092
>>> x is y
True

Sin embargo, conval is not NoneParece que no es tan simple.

>>> id(not None)
2001680
>>> id(None)
2053536
>>> val = 10
>>> id(val)
1815480092
>>> val is not None
True

Entonces, ¿qué hace el operador 'es'? ¿Es sólo la comparación de la identificación del objeto sólo conjeturé? Si es así,val is not None es interpretado en Python comonot (val is None)?

Respuestas a la pregunta(3)

Su respuesta a la pregunta