Python 3 introduit des changements importants dans la syntaxe et le comportement des arguments imbriqués. Dans Python 2, les arguments imbriqués pouvaient être définis à l'aide du déballage de tuples dans les définitions de fonctions et les expressions lambda. Cependant, cette fonctionnalité a été supprimée dans Python 3 en raison de problèmes de confusion et de complexité.
Lors de la tentative de compilation de code Python 2 qui utilise des arguments imbriqués dans un module Python 3 , des erreurs comme celle mentionnée dans le contexte fourni peuvent survenir. Pour réussir à porter le code vers Python 3, les directives suivantes doivent être suivies :
Définitions des fonctions :
Remplacez la syntaxe de décompression du tuple par un seul paramètre et décompressez manuellement le tuple dans le corps de la fonction :
<code class="python">def add(self, sub_pred_obj): sub, pred, obj = sub_pred_obj # Remaining function body</code>
Expressions Lambda :
Évitez le déballage des tuples et utilisez l'indexation pour accéder aux éléments individuels dans le lambda :
<code class="python">lambda xy: (xy[1], xy[0])</code>
Utilisation des outils de conversion :
Pour les fonctions complexes, les outils de conversion tels que 2to3, Modernize ou Futurize peuvent automatiquement identifier et suggérer ces modifications.
PEP 3113 explique le raisonnement derrière la suppression du déballage des paramètres de tuple. Il craint que cela puisse prêter à confusion et entraîner des difficultés de mise en œuvre dans de nombreux contextes, tels que les fermetures, le débogage et d'autres fonctionnalités du langage.
Bien que la décompression des paramètres de tuple ne soit plus pris en charge directement dans Python 3, il existe des solutions alternatives pour obtenir des fonctionnalités similaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!