Me gustaría llamar a una función en python usando un diccionario.
Aquí hay un código:
d = dict(param='test')
def f(param):
print(param)
f(d)
Esto se imprime {'param': 'test'}
pero me gustaría que solo se imprima test
.
Me gustaría que funcione de manera similar para más parámetros:
d = dict(p1=1, p2=2)
def f2(p1, p2):
print(p1, p2)
f2(d)
es posible?
python
function
dictionary
parameters
keyword
Dave Hillier
fuente
fuente
Algunos detalles adicionales que pueden ser útiles para saber (preguntas que tuve después de leer esto y fui y probé):
Ejemplos:
Número 1: la función puede tener parámetros que no están incluidos en el diccionario
Número 2: no puede anular un parámetro que ya está en el diccionario
Número 3: el diccionario no puede tener parámetros que no estén en la función.
Como se solicitó en los comentarios, una solución al Número 3 es filtrar el diccionario en función de los argumentos de palabras clave disponibles en la función:
Otra opción es aceptar (e ignorar) kwargs adicionales en su función:
Observe más allá de que puede usar argumentos posicionales y listas o tuplas de la misma manera que kwargs, aquí hay un ejemplo más avanzado que incorpora argumentos posicionales y de palabras clave:
fuente
'hello {greeting} {name}'.format( **{'name': 'Andrew', 'greeting': 'Mr'})
En python, esto se llama "desempaquetar", y puede encontrar un poco al respecto en el tutorial . La documentación de esto apesta, estoy de acuerdo, especialmente por lo fantásticamente útil que es.
fuente
Aquí tienes: funciona con cualquier otro iterable:
fuente