Python

Referenzübergabe vs. Wert in Python

Referenzübergabe vs. Wert in Python
Nachdem Sie Python kennen, können Sie Fälle finden, in denen die Funktionen die Argumente an einer Stelle nicht ändern, wie Sie es erwarten würden, insbesondere wenn Sie mit vielen anderen Computersprachen vertraut sind. Viele Sprachen verwenden Methodenargumente als Referenzen, die als Referenz an aktuelle Variablen übergeben werden. Wenn Sie ein fortgeschrittener Python-Entwickler sind, der die besondere Art und Weise von Python verstehen möchte, Methodenargumente zu behandeln, dann ist dieser Leitfaden genau das Richtige für Sie.

Python unterstützt die Übergabe von Objektreferenzen

Pass-by-Reference und Pass-by-Value sind zweifellos die beiden bekanntesten und am leichtesten verständlichen Methoden zur Parameterübergabe zwischen Programmiersprachen programming. Python ist leider "Pass-by-Object-Reference", weder "Pass by Value" noch "Pass by Reference", oft als "Call by Object Reference" oder "Call by Sharing" bezeichnet.” Es ist nützlich, sich das Konzept selbst genauer anzusehen, indem Sie es in Segmente aufteilen, während Sie sich mit den technischen Besonderheiten des Vorbeifahrens vertraut machen:

Bestehen: das bedeutet, eine Methode mit einem Argument zu versorgen.

Nach Referenz: Das bedeutet, dass sich das Argument, das Sie zur Methode verschieben, auf eine Variable bezieht, die sich jetzt im Speicher befindet, anstatt auf eine andere Replik dieser Variablen.

Wenn Sie der Methode eine Referenz auf eine definierte Variable zuweisen, würde die Variable, der sie entspricht, explizit von allen Operationen auf dieser Referenz beeinflusst werden. Betrachten wir nun ein Beispiel, wie das in der Praxis funktioniert. In diesem Beispiel haben wir eine Variable 'arg' einen Wert von . haben 4. In diesem Szenario ist die Variable 'arg' wurde nicht an seiner Stelle geändert. Python scheint Ihr bereitgestelltes Argument anstelle eines Verweises auf eine vorhandene Variable als eigenständigen Wert zu behandeln.

Würde dies bedeuten, dass Python Argumente anstelle von Referenzen nach Werten verschiebt?? Python verschiebt Argumente durch Zuweisungen, also weder nach Referenz noch mit Wert. Die Logik dafür ist zweifach:

Derzeit ist der übergebene Parameter ein Zeiger auf ein Objekt. Bestimmte Datentypen sind änderbar, andere nicht änderbar.

Wenn wir ein veränderliches Objekt in eine Funktion verschieben, erhält die Funktion eine Referenz auf dasselbe Objekt, sodass Sie alles zur Zufriedenheit Ihrer Seele mutieren können; Der externe Gültigkeitsbereich würde jedoch nichts wissen, bevor Sie die Referenz in der Funktion wieder hinzufügen. Sobald Sie fertig sind, zielt die externe Referenz nur auf das eigentliche Objekt. Wenn Sie ein unveränderliches Objekt in eine Funktion verschieben, kann die externe Referenz immer nicht neu verbunden werden, und Sie können das Objekt nicht einfach mutieren. Um die Dinge viel einfacher zu machen, lassen Sie uns eins nach dem anderen verstehen.

Referenzübergabe

Zuallererst müssen Sie verstehen, dass die Variable ‚mylist‘ selbst keine Liste ist, sondern sich auf eine Liste mit Werten bezieht. Sie können die Variable 'mylist' als Container mit Werten bezeichnen. Die Listenwerte sind Objekte. Die Variable 'mylist' wurde direkt mit ihrem Inhalt in die Funktion geliefert.

Sowohl „list“ als auch „my list“ scheinen im folgenden Codebeispiel dieselbe Speichervariable zu sein und gelten somit für dasselbe Speicherobjekt. Deshalb wird bei der Ausgabe "Saeed" gedruckt.'

Jede Aktion, die an der Variablen oder Entität ausgeführt wird, wird sofort auf die Aufrufermethode gespiegelt. Die Methode kann den Wert der Variablen vollständig ändern und auf ein ganz anderes Objekt abzielen. Wie Sie in der Funktion 'set_list' sehen können, haben wir den Listeninhalt geändert und eine ganz neue Liste mit dem Element 'Aqsa . gedruckt.' Dies liegt daran, dass wir die geänderte Liste zurückgegeben und in derselben Zeile wie der Anrufer gedruckt haben.

Die Methode kann auch die Elemente der Variablen für das gleiche Ergebnis wie unten neu zuordnen. Sie können sehen, dass wir einen neuen Wert an die Liste angehängt haben und die Änderung übernommen wurde. Wir haben eine eindeutige Zeichenfolge an eine Liste angehängt und an den Aufrufer zurückgegeben. Zusammenfassend lässt sich sagen, dass die Methode und der Aufrufer während der gesamten Pass-by-Beziehung dieselbe Variable und dasselbe Objekt verwenden.

Wertüberschreitung

Durch die Wertübergabe erhält die Methode ein Duplikat des Argumentobjekts, das der Aufrufer ihr zuweist. Dadurch wird sichergestellt, dass das Originalelement unverändert bleibt und alle vorgenommenen Änderungen an separaten Speicherorten in einer Replik des gleichen Objekts erhalten bleiben.

Sie gilt gleichermaßen für alle Operationen, die mit der Methode an einer Variablen oder der Entität ausgeführt werden. Duplikate von Variablen und Objekten im Gültigkeitsbereich der Aufrufmethode werden vollständig getrennt, um sie zusammenzufassen.

Objekt nach Referenz übergeben

Da Python in dieser Situation unterschiedlich ist, erhalten die Methoden von Python die sehr ähnliche Objektreferenz im Speicher, auf die sich der Aufrufer bezieht. Umgekehrt erhält die Technik die Variable 'mylist' (den Container) nicht. Die Caller-Methode speichert dasselbe Objekt; die Methode generiert den eigenen Container und generiert einen ganz neuen Index für seinen eigenen, genau wie bei der Wertübergabe.

Der Aufrufer und die Methode sprechen von demselben Objekt im Speicher, aber wenn die angehängte Methode ein externes Element auf eine Liste anwendet, wird die Aufrufer-Entität geändert. Sie haben mehrere Labels, aber es sind die gleichen Dinge. Beide Variablen enthalten ein sehr ähnliches Objekt. Das ist der Sinn hinter seiner Beziehung zur Bewegung am Objekt. Im Speicher verwenden die Methode und der Aufrufer ein ähnliches Objekt, fangen sie jedoch über mehrere Variablen ab. Die Aufrufervariable (der Container) wird durch Änderungen an der Methodenvariablen (dem Container) nicht geändert; nur die Daten oder der Inhalt werden geändert.

Fazit

Python arbeitet unabhängig von Sprachen, die das Verschieben nach Referenz oder Wert von Argumenten akzeptieren. Methodenargumente sind lokale Variablen, die jedem an die Methode übergebenen Wert zugewiesen wurden. Aber das hindert Sie immer noch nicht daran, dieselben Ergebnisse zu erzielen, die Sie in anderen Sprachen finden würden, wenn Sie Argumente per Stellvertreter verschieben.

Microsoft Sculpt Touch Wireless-Maus Bewertung
Ich habe vor kurzem gelesen, dass Microsoft Sculpt Touch kabellose Maus und beschloss, sie zu kaufen. Nachdem ich es eine Weile benutzt hatte, beschlo...
AppyMouse On-Screen Trackpad und Mauszeiger für Windows Tablets
Tablet-Benutzer vermissen oft den Mauszeiger, insbesondere wenn sie die Laptops gewohnt sind. Die Touchscreen-Smartphones und -Tablets bieten viele Vo...
Mittlere Maustaste funktioniert nicht unter Windows 10
Das mittlere Maustaste hilft Ihnen beim Scrollen durch lange Webseiten und Bildschirme mit vielen Daten. Wenn das aufhört, werden Sie am Ende die Tast...