Heim  >  Artikel  >  Backend-Entwicklung  >  Wie funktionieren verkettete Zuweisungen in Python und welche potenziellen Fallstricke gibt es beim Umgang mit veränderlichen Objekten?

Wie funktionieren verkettete Zuweisungen in Python und welche potenziellen Fallstricke gibt es beim Umgang mit veränderlichen Objekten?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 10:10:03916Durchsuche

How do chained assignments work in Python, and what are the potential pitfalls when dealing with mutable objects?

Wie funktionieren verkettete Zuweisungen?

Eine verkettete Zuweisung in Python, wie zum Beispiel:

x = y = somefunction()

ist äquivalent zu den folgenden zwei Anweisungen, die nacheinander ausgeführt werden:

temp = somefunction()
x = temp
y = temp

Dies bedeutet, dass der Ausdruck auf der rechten Seite des Zuweisungsoperators zuerst ausgewertet wird und der resultierende Wert dann allen zugewiesen wird Variablen auf der linken Seite, von links nach rechts.

Zum Beispiel gibt der folgende Code die Zahl 10 zweimal aus:

def somefunction():
    return 10

x = y = somefunction()
print(x)
print(y)

Es ist wichtig zu beachten, dass verkettete Zuweisungen möglich sind problematisch beim Umgang mit veränderlichen Objekten wie Listen. Der folgende Code weist beispielsweise x und y dieselbe leere Liste zu:

x = y = []

x.append(1)

print(x)
print(y)

Dies gibt [1, 1] aus, da sowohl x als auch y auf dieselbe Liste verweisen. Wenn Sie zwei separate Listen erstellen möchten, sollten Sie stattdessen Folgendes schreiben:

x = []
y = []

x.append(1)

print(x)
print(y)

Dadurch werden [1] und [] gedruckt, da x und y auf unterschiedliche Listen verweisen.

Das obige ist der detaillierte Inhalt vonWie funktionieren verkettete Zuweisungen in Python und welche potenziellen Fallstricke gibt es beim Umgang mit veränderlichen Objekten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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