Certains sites disent que l'opérateur ʻa + = b est le même que ʻa = a + b
, mais ce n'est pas exactement le même pour les objets mutables.
Soyez prudent si vous avez des variables qui pointent vers le même objet. (Surtout pour ceux qui utilisent NumPy!)
En un mot, il existe les différences suivantes. Pour les objets mutables,
--Dans ʻa + = b, l'objet pointé par ʻa
ne change pas avant et après l'affectation.
--Lorsque ʻa = a + b, l'objet pointé par ʻa
change avant et après l'affectation.
Cependant, pour les objets immuables, cela change dans les deux cas (le commentaire de @ shiracamus a un exemple).
Expérimentons pour créer «[1, 2, 3]» en ajoutant «[3]» à «[1, 2]». «y» fait référence à l'objet de «x» avant l'affectation. Vous pouvez obtenir l'ID d'un objet avec la fonction intégrée ʻid (x) `.
a += b
>>> x = y = [1, 2] #y est le même objet que x avant l'affectation
>>>
>>> id(x)
4397797440
>>> id(y)
4397797440
>>>
>>> x += [3]
>>>
>>> x
[1, 2, 3]
>>> y #Également ajouté à y
[1, 2, 3]
>>>
>>> id(x) #Même objet qu'avant l'affectation
4397797440
>>> id(y)
4397797440
a = a + b
>>> x = y = [1, 2] #y est le même objet que x avant l'affectation
>>>
>>> id(x)
4397797440
>>> id(y)
4397797440
>>>
>>> x = x + [3]
>>>
>>> x
[1, 2, 3]
>>> y #Non ajouté à y
[1, 2]
>>>
>>> id(x) #Pointant vers un autre objet qu'avant l'affectation
4395937472
>>> id(y)
4397797440
Recommended Posts