La collection set en python est-elle un type variable ?

anonymity
Libérer: 2019-06-14 09:54:07
original
7118 Les gens l'ont consulté

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.

La collection set en python est-elle un type variable ?

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)) # 相等
Copier après la connexion

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的改变而改变
Copier après la connexion

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]没有变化
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal