Referenzieren globaler Primitiven im Vergleich zu Objekten
Kann jemand bitte das folgende Ergebnis in Python erklären?
Wenn der folgende Codeausschnitt ausgeführt wird, gibt Python einen Fehler aus, der besagt, dass die Variablex
wurde vor der Zuweisung referenziert:
x = 1
def increase_x():
x += 1
increase_x()
ie Lösung wäre natürlich, die Zeile @ einzuschließeglobal x
nach der Funktionsdeklaration fürincrease_x
.
Beim Ausführen dieses nächsten Codeausschnitts tritt jedoch kein Fehler auf, und das Ergebnis ist das, was Sie erwarten:
x = [2, -1, 4]
def increase_x_elements():
for k in range(len(x)):
x[k] += 1
increase_x_elements()
Ist dies so, weil Ganzzahlen in Python Primitive sind (und keine Objekte) und sox
im ersten Snippet ist ein Primitiv, das im Speicher gespeichert ist, währendx
im zweiten Snippet verweist ein Zeiger auf ein Listenobjekt?