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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage