Maison >développement back-end >Tutoriel Python >Nommer ou ne pas nommer : quand devez-vous attribuer des noms aux Lambdas en Python ?

Nommer ou ne pas nommer : quand devez-vous attribuer des noms aux Lambdas en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-27 14:43:11787parcourir

To Name or Not to Name: When Should You Assign Names to Lambdas in Python?

Devriez-vous nommer des Lambdas en Python ?

Les expressions Lambda offrent un moyen concis et pratique de définir des fonctions anonymes en Python. Cependant, il est souvent tentant d'attribuer des noms aux lambdas dans les fonctions pour la réutilisation du code et des fonctionnalités spécifiques.

Critique de la dénomination des lambdas

Bien que cette pratique puisse sembler pratique, elle est généralement considéré comme non-Pythonic et va à l'encontre de la recommandation de PEP8. Comme le dit PEP8 :

"Utilisez toujours une instruction def au lieu d'une instruction d'affectation qui lie une expression lambda directement à un identifiant."

La justification de cette recommandation est que définir un lambda comme un function :

  • Fournit un nom clair et explicite : contrairement aux lambdas nommés, les instructions def associer explicitement la fonction à un identifiant significatif.
  • Aide au traçage et aux représentations sous forme de chaîne : les fonctions nommées affichent leur nom spécifique dans les messages d'erreur et les représentations sous forme de chaîne, offrant une meilleure lisibilité.
  • Élimine le principal avantage des lambdas : la possibilité d'intégrer des fonctions anonymes dans des expressions plus grandes est redondante lorsque vous attribuez une variable à un lambda.

Exemple

Considérez l'exemple de fonction fourni dans la question :

def fcn_operating_on_arrays(array0, array1):
    indexer = lambda a0, a1, idx: a0[idx] + a1[idx]
    
    # ...
    indexed = indexer(array0, array1, indices)
    # ...

Au lieu d'utiliser un lambda nommé, il est plus pythonique de définir un élément distinct, explicitement nommé function:

def index_array(a0, a1, idx):
    return a0[idx] + a1[idx]

def fcn_operating_on_arrays(array0, array1):
    
    # ...
    indexed = index_array(array0, array1, indices)
    # ...

Conclusion

Bien qu'attribuer des noms aux lambdas puisse sembler utile dans certaines situations, cela n'est pas recommandé. Suivez plutôt le principe pythonique consistant à utiliser des définitions de fonctions explicites pour maintenir la clarté, la lisibilité et le respect des meilleures pratiques.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn