Bei der Verwendung von python habe ich festgestellt, dass der -Funktionsparameter list , der Aufruf von list.append() innerhalb der Funktion ändert die formalen Parameter, was sich von C/C++ unterscheidet. Überprüfen Sie die relevanten Informationen und notieren Sie sie hier In Python kann die ID die Speicheradresse von
Objekt>>> num1 = 10>>> num2 = num1>>> num3 = 10>>> id(num1)4299190320>>> id(num2)4299190320>>> id(num3)4299190320
Sie können sehen num1, num2, Die drei Objekte von num3 zeigen auf eine Adresse. Python verwendet dazu eine Methode namens
, die dem intelligenten Zeiger Variable von C++zhong sehr ähnlich ist Das Zuweisen eines Werts zu einer Variablen entspricht dem +1 des Referenzzählers desselben Objekts und nicht der Neuzuweisung von Speicherplatz. Für Listenobjekte können Sie die folgenden Ergebnisse sehen:
<.>
>>> list1 = [,>>> list2 = [,>>> >>> 4302498128
list1 und list3 zeigen auf denselben Raum und list2 zeigt auf eine andere Adresse
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)
Sie können sehen, dass num innerhalb der Funktion auf eine andere Speicheradresse zeigt, wenn der Wert von int geändert wird, und wenn die Liste geändert wird, befindet sie sich an derselben Speicheradresse
In Python können Objekte in zwei Typen unterteilt werden: Tupel, numerischer Typ (Zahl),
String
python test.py42991819044299181904429918188010433697991243369799124336979912[0, 2, 1]
). Alle unveränderlichen Objekte und Wörter. Typische Objekte (Wörterbuch) und Listenobjekte (Liste) sind veränderliche Objekte. Seien Sie daher bei der Übergabe von Parametern vorsichtig.
Das obige ist der detaillierte Inhalt vonUnterschiede in den Python-Funktionsparametern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!