À l'aide de la carte() de la fonction avec le mot-clé arguments
Voici la boucle que je suis en train d'utiliser le map
fonction:
volume_ids = [1,2,3,4,5]
ip = '172.12.13.122'
for volume_id in volume_ids:
my_function(volume_id, ip=ip)
Est-il un moyen pour que je puisse faire cela? Il serait banal si ce n'était pas pour le ip
paramètre, mais je ne suis pas sûr de la façon de les gérer.
Vous devez vous connecter pour publier un commentaire.
Utilisation
functools.partielle()
:partial()
crée un nouveau appelable, que vais appliquer tous les arguments (y compris le mot-clé arguments) à la enveloppé de la fonction en plus de tout ce qui leur est passé à cette nouvelle appelable.Ici est un lambda approche (pas mieux, juste différent)
Cela peut être fait facilement avec une compréhension de liste.
En général, on peut utiliser la carte pour passer des mots-clés à une fonction par emballage de la fonction dans quelque chose qui déballe un dictionnaire, puis en passant un objet iterable de dictionnaires à la carte. Exemple:
Pour votre cas particulier, cependant, une solution plus simple serait:
C'est concis et ne pas compter sur les importations. Une autre possibilité pourrait être de combiner des produits et starmap de itertools:
Ce généralise bien pour la mise à plus d'une adresse ip, ou de plus de deux variables.
Comment à ce sujet?
C'est trois lignes de code au lieu d'un --- c'est trois lignes de claire et évidente de code au lieu de l'importation de certains cas spécial helper de module tel-et-tel. Cet argument est probablement une question de goût, mais il a beaucoup de poids en fonction de qui vous parlez.