Qu'est-ce qu'un objet mutable/immuable
Objet immuable, la valeur dans la mémoire pointée par l'objet ne peut pas être modifiée. Lorsqu'une variable est modifiée, puisque la valeur vers laquelle elle pointe ne peut pas être modifiée, cela équivaut à copier la valeur d'origine puis à la modifier. Cela ouvrira une nouvelle adresse et la variable pointera vers cette nouvelle adresse.
Objet variable, la valeur dans la mémoire pointée par cet objet peut être modifiée. Lorsqu'une variable (une référence pour être précis) est modifiée, la valeur à laquelle elle fait référence est en fait modifiée directement. Aucune copie n'a lieu et aucune nouvelle adresse n'est ouverte. En termes simples, elle est modifiée sur place.
En Python, les types numériques (int et float), string str et tuple tuple sont tous des types immuables. Les listes, dictionnaires et ensembles sont des types de variables.
Il est plus intuitif de regarder le code Regardez le code de la collection définie :
abb = {1, 2, 3} acc = abb print(id(abb), id(acc)) acc.add(4) print(abb) # {1, 2, 3, 4} print(id(abb), id(acc)) # 相等
Les objets variables peuvent être modifiés car l'objet pointé peut être modifié, il n'est donc pas nécessaire de faire une copie puis de le modifier, il suffit de le changer en place, donc aucune nouvelle mémoire ne sera ouverte et l'identifiant restera inchangé avant et après le changement.
Bien sûr, ce n'est pas le cas pour les objets immuables. Vous pouvez le comparer avec ceci
abc = 3 dd = abc dd = 43 print(abc) # 3,并不随dd的改变而改变
Mais s'il s'agit d'une copie, il copie simplement le contenu et ne transfère pas. sans référence. Ceci est particulièrement utile lorsque l'on souhaite utiliser les valeurs d'une liste sans modifier la liste d'origine.
blist = alist[:] # or alist.copy() print(alist is blist) # False blist.append(4) print(alist) # 还是[1,2 ,3]没有变化
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!