Heim > Backend-Entwicklung > Python-Tutorial > Was ist der subtile Unterschied zwischen „i = x' und „i = i x' in Python?

Was ist der subtile Unterschied zwischen „i = x' und „i = i x' in Python?

Patricia Arquette
Freigeben: 2024-12-04 17:13:10
Original
860 Leute haben es durchsucht

What's the Subtle Difference Between `i  = x` and `i = i   x` in Python?

Der subtile Unterschied zwischen „i = x“ und „i = i x“ in Python

In Python ist der Zuweisungsoperator „=" macht das, was Sie erwarten würden: Es weist einer Variablen einen Wert zu. Allerdings verhält sich der erweiterte Zuweisungsoperator „ =" je nach Art des zu ändernden Objekts leicht unterschiedlich.

Der Schlüssel zum Verständnis des Unterschieds liegt in den magischen Methoden „__iadd__" und „__add__“. „__iadd__“ wird aufgerufen, wenn der erweiterte Zuweisungsoperator verwendet wird, während „__add__“ aufgerufen wird, wenn der reguläre „ “-Operator verwendet wird.

Veränderliche vs. unveränderliche Objekte

Der Hauptunterschied zwischen „ =" und „ " wird deutlich, wenn es um veränderliche und unveränderliche Objekte geht. Unveränderliche Objekte können nicht geändert werden, daher geben ihre magischen Methoden normalerweise eine neue Instanz zurück. Andererseits können veränderliche Objekte geändert werden, und ihre magischen Methoden ändern normalerweise das Objekt selbst.

Fall unveränderlicher Objekte (z. B. ganze Zahlen)

Für Bei unveränderlichen Objekten wie Ganzzahlen haben sowohl „ =" als auch „ " den gleichen Effekt. Sie erstellen eine neue Ganzzahl und weisen sie der Variablen zu. Zum Beispiel:

i = 1
i += 1  # Same as i = i + 1
Nach dem Login kopieren

Bei veränderlichen Objekten (z. B. Listen)

Bei veränderlichen Objekten wie Listen unterscheidet sich das Verhalten von „ =" von „ ". Betrachten Sie das folgende Beispiel:

a = [1, 2, 3]
b = a
b += [1, 2, 3]
print(a)  # [1, 2, 3, 1, 2, 3]
print(b)  # [1, 2, 3, 1, 2, 3]
Nach dem Login kopieren

In diesem Fall ändert die Verwendung von „ =" die Liste „b“ an Ort und Stelle. Sowohl „a“ als auch „b“ verweisen nun auf dieselbe geänderte Liste.

Vergleichen Sie dies mit:

a = [1, 2, 3]
b = a
b = b + [1, 2, 3]
print(a)  # [1, 2, 3]
print(b)  # [1, 2, 3, 1, 2, 3]
Nach dem Login kopieren

Hier wird durch die Verwendung von „ “ eine neue Liste erstellt , das „b“ zugeordnet ist. „a“ ist davon nicht betroffen, da es immer noch auf die ursprüngliche Liste verweist.

Fazit

Zusammenfassend lässt sich sagen, dass die Wahl zwischen „ =" und „ " vom Typ abhängt Objekt zugewiesen wird. Für unveränderliche Objekte sind beide Operatoren gleichwertig. Bei veränderlichen Objekten ändert „ =" das Objekt an Ort und Stelle, während „ " eine Kopie erstellt.

Das obige ist der detaillierte Inhalt vonWas ist der subtile Unterschied zwischen „i = x' und „i = i x' in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage