Je voudrais appeler une fonction en python à l'aide d'un dictionnaire.
Voici du code:
d = dict(param='test')
def f(param):
print(param)
f(d)
Ceci imprime {'param': 'test'}
mais j'aimerais qu'il imprime test
.
J'aimerais qu'il fonctionne de la même manière pour plus de paramètres:
d = dict(p1=1, p2=2)
def f2(p1, p2):
print(p1, p2)
f2(d)
Est-ce possible?
python
function
dictionary
parameters
keyword
Dave Hillier
la source
la source
Quelques détails supplémentaires qui pourraient être utiles à savoir (questions que j'avais après avoir lu ceci et qui sont allées et testées):
Exemples:
Numéro 1: la fonction peut avoir des paramètres qui ne sont pas inclus dans le dictionnaire
Numéro 2: vous ne pouvez pas remplacer un paramètre qui est déjà dans le dictionnaire
Numéro 3: Le dictionnaire ne peut pas avoir de paramètres qui ne sont pas dans la fonction.
Comme demandé dans les commentaires, une solution au numéro 3 consiste à filtrer le dictionnaire en fonction des arguments de mots clés disponibles dans la fonction:
Une autre option consiste à accepter (et à ignorer) les kwargs supplémentaires dans votre fonction:
Remarquez plus loin que vous pouvez utiliser des arguments positionnels et des listes ou des tuples de la même manière que les kwargs, voici un exemple plus avancé incorporant à la fois des arguments positionnels et des arguments de mots clés:
la source
'hello {greeting} {name}'.format( **{'name': 'Andrew', 'greeting': 'Mr'})
En python, cela s'appelle "décompresser", et vous pouvez en trouver un peu dans le tutoriel . La documentation est nul, je suis d'accord, surtout à cause de son utilité fantasmatique.
la source
Et voilà - fonctionne comme n'importe quel autre itérable:
la source