Python 3 führt erhebliche Änderungen an der Syntax und dem Verhalten verschachtelter Argumente ein. In Python 2 konnten verschachtelte Argumente durch Tupel-Entpacken in Funktionsdefinitionen und Lambda-Ausdrücken definiert werden. Diese Funktion wurde jedoch in Python 3 aufgrund von Bedenken hinsichtlich Verwirrung und Komplexität entfernt.
Beim Versuch, Python 2-Code, der verschachtelte Argumente verwendet, in ein Python 3-Modul zu kompilieren , können Fehler wie der im angegebenen Kontext erwähnte auftreten. Um Code erfolgreich nach Python 3 zu portieren, sollten die folgenden Richtlinien befolgt werden:
Funktionsdefinitionen:
Ersetzen Sie die Syntax zum Entpacken des Tupels durch einen einzelnen Parameter und entpacken Sie das Tupel manuell innerhalb des Funktionskörpers:
<code class="python">def add(self, sub_pred_obj): sub, pred, obj = sub_pred_obj # Remaining function body</code>
Lambda-Ausdrücke:
Vermeiden Sie das Entpacken von Tupeln und verwenden Sie die Indizierung, um auf einzelne Elemente innerhalb des Lambda zuzugreifen:
<code class="python">lambda xy: (xy[1], xy[0])</code>
Verwenden von Konvertierungstools:
Bei komplexen Funktionen können Konvertierungstools wie 2to3, Modernize oder Futurize diese Änderungen automatisch erkennen und vorschlagen.
PEP 3113 erläutert die Gründe für die Entfernung des Entpackens von Tupelparametern. Es werden Bedenken geäußert, dass es verwirrend sein kann und in vielen Zusammenhängen zu Implementierungsschwierigkeiten führt, beispielsweise bei Schließungen, Debugging und anderen Sprachfunktionen.
Während das Entpacken von Tupelparametern nicht mehr möglich ist Wird direkt in Python 3 unterstützt, gibt es alternative Lösungen, um eine ähnliche Funktionalität zu erreichen:
Das obige ist der detaillierte Inhalt vonWie gehe ich mit verschachtelten Argumenten in Python 3 um, nachdem das Tupel-Entpacken entfernt wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!