D'abord, je vais commencer comme tout le monde. Je suis nouveau à Python. Mon professeur m'a donné le problème: IT imprime: p> Je comprends qu'un reste à 10 car les entiers sont immuables, mais je Ne comprenez pas pourquoi B change et c non. P> p>
3 Réponses :
def f(a, b, unused): a = 1 b[0] = 2
La clé est de comprendre les variables comme des pointeurs sous la hotte: lorsque vous appelez F (A, B, C), seul B est effectivement modifié. La variable "C" à l'intérieur de la mise en œuvre de la fonction est différente de la mise en œuvre "C" en dehors de la fonction. P> P>
Lorsque vous appelez A code> ne conserve pas la valeur de 10 car elle est immuable. Il conserve la valeur de 10 car lorsque vous appelez
a = 1 code> dans la portée locale de
f () code> Vous créez une nouvelle variable. P>
c = b code> intérieur
f () code>, le
C code local devient une référence locale à l'objet mutable représenté par
B code>. Lorsque vous réaffectez les valeurs de cet objet mutable, le changement est reflété dans l'objet d'origine. P>
Je soulignerais également que cela ne doit pas avoir à voir avec les types de données mutables / immuables. Comme les réponses ci-dessous indiquent, il s'agit d'une affectation variable. Le modèle de données Page Discutez cette différence.
Qu'est-ce que vous êtes déroutant, ce sont les noms de variables, je suppose. Donnez-les à l'extérieur de la fonction Noms différents I.E. X, Y, Z; Donc, vous voulez appeler f (x, y, z) et imprimer x, y, z. Et je suis sûr que ce ne sera pas si difficile à voir.