Verkettete Zuweisungen in Python verstehen
Verkettete Zuweisungen in Python, veranschaulicht durch Ausdrücke wie „x = y = somefunction()“, haben Funken ausgelöst Diskussionen über ihre Äquivalenz zu mehreren sequentiellen Zuweisungen („x = somefunction(); y = somefunction()“). Um diese Angelegenheit zu klären, untersuchen wir die Funktionsweise verketteter Zuweisungen im Detail.
Bei einer verketteten Zuweisung wird das Ziel ganz links zuerst zugewiesen. Daher ist „x = y = somefunction()“ äquivalent zu:
temp = somefunction() x = temp y = temp
Diese Reihenfolge ist entscheidend, da das Ziel links den Wert der temporären Variablen „temp“ erhält, bevor er dem Ziel rechts zugewiesen wird. Dies wird in der Zerlegung einer verketteten Zuweisungsfunktion deutlich:
>>> def chained_assignment(): ... x = y = some_function() ... >>> import dis >>> dis.dis(chained_assignment) 2 0 LOAD_GLOBAL 0 (some_function) 3 CALL_FUNCTION 0 6 DUP_TOP 7 STORE_FAST 0 (x) 10 STORE_FAST 1 (y) 13 LOAD_CONST 0 (None) 16 RETURN_VALUE
Beachten Sie, dass der von der Funktion zurückgegebene Wert zuerst in „x“ und dann in „y“ gespeichert wird.
Dieses Verständnis ist entscheidend für das Verständnis des Verhaltens verketteter Zuweisungen. Beispielsweise sollten Ausdrücke wie „x = y = []“ vermieden werden, da sich sowohl „x“ als auch „y“ auf dieselbe Liste beziehen. Bevorzugen Sie stattdessen separate Zuweisungen wie „x = []“ und „y = []“, um unterschiedliche Listen zu erstellen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3