>>> x = 100
>>> y = 100
>>> x == y
True
>>> x is y
True
>>> x = 1000
>>> y = 1000
>>> x == y
True
>>> x is y
False
L'opérateur is compare si la gauche et la droite font référence au même objet. Voir l'exemple suivant.
>>> x = []
>>> y = []
>>> x is y
False
>>> z = x
>>> x is z
True
>>> x.append(42)
>>> y
[]
>>> z
[42]
x et y sont des objets de liste distincts créés séparément. Donc x est y sera faux, et changer x n'affectera pas y.
D'autre part, z fait référence au même objet que x. Donc x est z est Vrai, et changer x (l'objet de liste référencé par) change naturellement aussi z.
Un objet dont la valeur indiquée par l'objet est déterminée lors de la création de l'objet et ne change pas par la suite est appelé immuable. L'entier est immuable. Consultez l'exemple de code ci-dessous.
>>> x = 42
>>> y = x
>>> x is y
True
>>> x += 1
>>> x
43
>>> y
42
>>> x is y
False
Immédiatement après «y = x», «x est y» était Vrai parce que x et y pointent vers le même objet représentant 42.
x + = 1
assigne un autre objet représentant 43 à x. Donc, «x est y» devient Faux.
Le modèle Flyweight est utilisé pour l'optimisation lorsque des objets immuables tels que des types entiers sont utilisés en grand nombre. En partageant un objet existant au lieu de créer un objet avec cette valeur chaque fois qu'une nouvelle valeur est nécessaire
Il y a des mérites tels que.
(À partir du 07/09/2016) En CPython, les entiers de -5 à 256 sont gérés par le modèle de poids volumique, et le même objet est toujours utilisé. Par conséquent, si la valeur est dans cette plage, «x est y» peut être Vrai même pour les objets qui auraient dû être créés séparément.
Recommended Posts