„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum gibt Python 3 einen Syntaxfehler aus, wenn verschachtelte Tupelargumente verwendet werden?

Warum gibt Python 3 einen Syntaxfehler aus, wenn verschachtelte Tupelargumente verwendet werden?

Veröffentlicht am 10.11.2024
Durchsuche:296

Why Does Python 3 Give a Syntax Error When Using Nested Tuple Arguments?

Verschachtelte Argumente in Python 3

Beim Ausführen von Python-Code, der verschachtelte Tupelargumente als Funktionsparameter enthält, kann ein Syntaxfehler auftreten:

File "/usr/local/lib/python3.2/dist-packages/simpletriple.py", line 9
    def add(self, (sub, pred, obj)):
                  ^
SyntaxError: invalid syntax

Ursachen

In Python 3 wurde das Entpacken von Tupelparametern entfernt. Dies bedeutet, dass Funktionen Tupel nicht mehr als Argumente akzeptieren und sie direkt in Variablen entpacken können.

Lösung: Manuell entpacken

Um den Syntaxfehler zu beheben, müssen Sie Änderungen vornehmen die Funktion zum manuellen Entpacken des Tupels in einzelne Variablen. Hier ist ein Beispiel:

def add(self, sub_pred_obj): # Previous syntax: def add(self, (sub, pred, obj))
    sub, pred, obj = sub_pred_obj
    # ... rest of the function

Diese Modifikation entpackt das sub_pred_obj-Tupel in die einzelnen Variablen sub, pred und obj.

Zusätzlicher Hinweis

Wenn es sich bei der Funktion um eine Lambda-Funktion handelt, ist ein manuelles Entpacken nicht möglich. Erwägen Sie stattdessen, das Tupel als einzelnen Parameter zu übergeben und über die Indizierung auf seine Elemente zuzugreifen:

lambda xy: (xy[1], xy[0]) # Instead of: lambda (x, y): (y, x)
Neuestes Tutorial Mehr>

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