Commentaire de comment puis-je obtenir autour de déclarer une nouvelle variable dans une boucle for (a manqué de commenter la taille)
Python gère la même référence de l'objet créé. (indépendamment de la mutabilité),par exemple,
In [1]: i = 1
In [2]: j = 1
In [3]: id(i)
Out[3]: 142671248
In [4]: id(j)
Out[4]: 142671248
Vous pouvez voir à la fois i et j, se référer au même objet en mémoire.Ce qui se passe, quand on change la valeur d'une immuable variable.
In [5]: j = j+1
In [6]: id(i)
Out[6]: 142671248
In [7]: id(j)
Out[7]: 142671236
vous pouvez le voir j maintenant commence à pointer un nouvel emplacement (où 2 est stocké), et j'ai encore des points à l'emplacement où 1 est stockée.
Pendant l'évaluation,
j = j+1
La valeur est choisi à partir de 142671248, calculée(si pas déjà dans le cache), et de les mettre à un nouvel emplacement 142671236. j est fait à point pour
le nouvel emplacement. En termes plus simples, une nouvelle copie faite à chaque fois immuable variable est modifiée.
La mutabilité
Mutable objets de la loi sur les peu différent à cet égard. Lorsque la valeur pointée par
In [16]: a = []
In [17]: b = a
In [18]: id(a)
Out[18]: 3071546412L
In [19]: id(b)
Out[19]: 3071546412L
A et b pointent vers le même emplacement mémoire.
In [20]: a.append(5)
Emplacement mémoire pointé par a est modifié.
In [21]: a
Out[21]: [5]
In [22]: b
Out[22]: [5]
In [23]: id(a)
Out[23]: 3071546412L
In [24]: id(b)
Out[24]: 3071546412L
À la fois a et b, pointent toujours vers le même emplacement mémoire. En d'autres mots, mutable variables la loi de la même zone mémoire pointée par la variable, au lieu de faire une copie de la valeur pointée par la variable, comme dans immuable variable de cas.