J'ai écrit un script Python qui appelle une fonction. Cette fonction prend 7 liste comme paramètres à l'intérieur de la fonction, quelque chose comme ceci: où tous les arguments sauf lien code> sont des listes. Mais cela fait que mon code a l'air assez moche. Je passe ces listes à cette fonction car la fonction ajoute peu de valeurs dans toutes ces listes. Comment puis-je le faire de manière plus lisible pour les autres utilisateurs? P> P>
6 Réponses :
Vous pouvez utiliser ou vous pouvez utiliser un dictionnaire p> < Pré> xxx pré> p> * args code> si vous n'avez pas besoin d'utiliser des noms pour vos listes:
rouge à lèvres sur un cochon, l'OP devrait définir une nouvelle classe qui encapsule les paramètres
Dans ces situations Collections.NameDTupple Code> pourrait être utile.
Vous pouvez le changer à: puis l'invoque comme suit: p> et vous obtiendriez les différentes valeurs hors détails. par: p> Il serait plus robuste de tourner Détails code> dans un dictionnaire, avec les noms de variable comme clé, alors prenez votre choix entre quelques-unes Plus de lignes de code vs. Programmation défensive = p p> p>
Je pense que l'utilisation de ** kwarg est meilleure.
Regardez cet exemple:
généralement, passant plus de 3 paramètres à une fonction n'est pas recommandé. Ce n'est pas spécifique à Python, mais à la conception logicielle en général. Vous pouvez en savoir plus sur la manière de réduire le nombre de paramètres passés à une fonction ici . P>
Suivre la perspective des réponses précédentes, mais d'un point de vue plus général, je voudrais ajouter qu'il existe plusieurs façons de rendre votre code plus lisible: p>
link code>, spécifique_list code>, list_type code>. par Faire cela, vous pouvez détecter dans votre Fonction de WorkDétails code> Quelle liste que vous avez passée avec list_type cod> et ajoutez les éléments corrects à cette liste spécifique code>) li>
- Pour créer une structure d'objet de paramètre / une structure de données passée à votre fonction (voici les réponses précédentes suggérées à l'aide de Listes , Dictionnaires ...) Li>
ul>
J'espère que cette aide. P>
Que vous devez transmettre que de nombreuses listes sont un signe que votre fonction ne fait pas une seule chose et que vous devez le refroidir en la rompant dans des fonctions plus petites et / ou la convertir en une classe. Vous pouvez passer des paramètres en tant que mots-clés ou transmettre un nombre arbitraire de paramètres à une fonction, comme décrit par Cette page Stackoverflow , mais il sera toujours difficile pour les autres de lire et de comprendre si vous avez votre fonction faire plus d'une chose. P>
Vous pouvez utiliser plusieurs arguments représentés par Utilisez tout type de données comme arguments et autant de paramètres que de mots clés pour le fonction. La fonction les détectera automatiquement et les séparez-les vers des arguments et des mots-clés: p> * args code> et plusieurs mots-clés représentés par
** kwargs code> et passant à une fonction: p>
Ajoutez-t-il les mêmes choses à chaque liste ou différentes choses?