"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi Python 3 génère-t-il une erreur de syntaxe lors de l'utilisation d'arguments de tuples imbriqués ?

Pourquoi Python 3 génère-t-il une erreur de syntaxe lors de l'utilisation d'arguments de tuples imbriqués ?

Publié le 2024-11-10
Parcourir:876

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

Arguments imbriqués dans Python 3

Lors de l'exécution de code Python qui inclut des arguments de tuple imbriqués comme paramètres de fonction, il peut y avoir une erreur de syntaxe :

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

Causes

Dans Python 3, la décompression des paramètres de tuple a été supprimée. Cela signifie que les fonctions ne peuvent plus accepter les tuples comme arguments et les décompresser directement dans des variables.

Solution : Décompresser manuellement

Pour résoudre l'erreur de syntaxe, vous devez modifier la fonction pour décompresser manuellement le tuple en variables individuelles. Voici un exemple :

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

Cette modification décompresse le tuple sub_pred_obj dans les variables individuelles sub, pred et obj.

Note supplémentaire

Si la fonction est une fonction lambda, le déballage manuel n'est pas possible. Au lieu de cela, envisagez de passer le tuple en tant que paramètre unique et d'accéder à ses éléments via l'indexation :

lambda xy: (xy[1], xy[0]) # Instead of: lambda (x, y): (y, x)
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3