Maison >développement back-end >Tutoriel Python >Comment puis-je prédéfinir des arguments pour les fonctions Python à l'aide de functools.partial ?

Comment puis-je prédéfinir des arguments pour les fonctions Python à l'aide de functools.partial ?

DDD
DDDoriginal
2024-12-15 09:42:12619parcourir

How Can I Predefine Arguments for Python Functions Using functools.partial?

Comprendre la liaison d'arguments dans les fonctions Python

Supposons que vous souhaitiez créer une fonction qui peut être appelée ultérieurement avec des arguments spécifiques prédéfinis ou avec moins d'arguments supplémentaires arguments. Comment cela peut-il être réalisé en Python ?

Solution : functools.partial

La solution réside dans l'utilisation de la fonction functools.partial. Il renvoie un appelable qui encapsule une fonction avec tout ou partie de ses arguments gelés. Cela vous permet d'invoquer ultérieurement la fonction encapsulée avec les arguments gelés déjà appliqués.

Exemple d'utilisation

Montrons comment lier des arguments à l'aide de functools.partial :

import functools
  
print_hello = functools.partial(sys.stdout.write, "Hello world\n")
  
print_hello()

Sortie :

Hello world

Ce code crée une fonction print_hello qui affichera toujours "Hello world" lorsqu'elle sera appelée. La fonction functools.partial a lié le premier argument de sys.stdout.write à la chaîne "Hello world".

Expression Lambda équivalente

Le code ci-dessus est équivalent à l'expression lambda suivante :

print_hello = lambda *a, **kw: sys.stdout.write("Hello world\n", *a, **kw)

En d'autres termes, functools.partial fournit un moyen pratique de créer un nouveau fonction en appliquant partiellement des arguments à une fonction existante.

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