La ==
equivalencia del valor de prueba del operador. El is
operador prueba la identidad del objeto, Python prueba si los dos son realmente el mismo objeto (es decir, viven en la misma dirección en la memoria).
>>> a = 'banana'
>>> b = 'banana'
>>> a is b
True
En este ejemplo, Python solo creó un objeto de cadena, y ambos, a
y se b
refiere a él. La razón es que Python almacena en caché internamente y reutiliza algunas cadenas como una optimización, realmente solo hay una cadena 'banana' en la memoria, compartida por a y b; Para desencadenar el comportamiento normal, debe usar cadenas más largas:
>>> a = 'a longer banana'
>>> b = 'a longer banana'
>>> a == b, a is b
(True, False)
Cuando crea dos listas, obtiene dos objetos:
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
En este caso, diríamos que las dos listas son equivalentes, porque tienen los mismos elementos, pero no idénticos, porque no son el mismo objeto. Si dos objetos son idénticos, también son equivalentes, pero si son equivalentes, no son necesariamente idénticos.
Si se a
refiere a un objeto y usted lo asigna b = a
, ambas variables se refieren al mismo objeto:
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True