Maison > Article > développement back-end > Différences dans les paramètres de la fonction Python
Dans le processus d'utilisation de python, j'ai découvert que lorsque le paramètre de fonction est list , appeler list.append() à l'intérieur de la fonction modifiera les paramètres formels, ce qui est différent de C/C++. Vérifiez les informations pertinentes et enregistrez-les ici
En python, l'identifiant peut obtenir l'adresse mémoire de>>> num1 = 10>>> num2 = num1>>> num3 = 10>>> id(num1)4299190320>>> id(num2)4299190320>>> id(num3)4299190320
référence comptage pour compléter cela, qui est très similaire au pointeur intelligent de C++zhong, variable. Attribuer une valeur à une variable équivaut à +1 le compteur de référence du même objet, plutôt que de réallouer de l'espace
Pour les objets liste, vous pouvez voir les résultats suivants :.
>>> list1 = [,>>> list2 = [,>>> >>> 4302498128
list1 et list3 pointent vers le même espace, et list2 pointe vers une autre adresse
Le passage du paramètre de fonction en python est le passage d'un objet, et il y a aussi des problèmes locaux et globaux. , il y a deux règles dans le processus de transmission des paramètres :
Et la modification de l'objet local ne le fera pas. changer les données d'origine.Modifier les objets mutables.Les objets mutables sont principalement des listes et des dictionnaires. Cette position est essentiellement que la modification du sous-objet local analysé précédemment ne changera pas l'ID de l'objet dictionnaire ou de l'objet liste .
Les résultats sont les suivants :
def incrInt(num): pId(num) num += 1; pId(num)def incrList(listArg): pId(listArg) listArg.append(1); pId(listArg)def pId(arg): print id(arg) num1 = 10pId(num1) incrInt(num1)print(num1) list1 = [0,2] pId(list1) incrList(list1)print(list1)
Vous pouvez voir qu'à l'intérieur de la fonction, lorsque la valeur de int est modifiée, num pointe vers une autre adresse mémoire, et lorsque la liste est modifiée, elle est à la même adresse mémoire
python test.py42991819044299181904429918188010433697991243369799124336979912[0, 2, 1]string
(
string
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!