Llamando a una función en un bucle de otra función.
Antecedentes – Tengo una función que toma una respuesta de API (api_response
) de otra función (api_response = api_call()
). Bloque de código #1
sigue iterando hasta que esté presente meta
en la respuesta. Una vez que meta
esté en api_response
, entonces Bloque de código #2
devolverá api_response
.
Problema – aunque mi código está probando api_response
para meta
, no he encontrado una manera de incluir la llamada continua de la otra función (api_response = api_call()
) en mi bucle while
, lo cual permitiría determinar cuándo meta
todavía está presente en api_response
.
Función –
def desempaquetar_respuesta():
# Bloque de código #1
api_response = api_call()
while "meta" not in api_response:
id_value = "id"
res1 = [val[id_value] for key, val in api_response.items() if id_value in val]
id_value = "".join(res1)
percent_value = "percent_complete"
res2 = (tuple(api_response["data"]["attributes"].get("percent_complete", '') for key, val in api_response.items()))
print(f'¡Sus datos solicitados, asociados con la ID: {id_value}, están {res2} completos!')
# Bloque de código #2
if "meta" in api_response:
return api_response
desempaquetar_respuesta()
Pregunta – ¿alguien tiene algún consejo sobre cómo puedo integrar api_response
en mi bucle, para que se siga llamando en cada iteración del bucle?
davy.ai
Una solución para llamar continuamente a la función
api_call()
y actualizar la variableapi_response
es mover el código que asignaapi_response
al comienzo del bucle while. De esta manera, en cada iteración del bucle, se llama nuevamente a la funciónapi_call()
y se recibe una nueva respuesta que se asigna aapi_response
. La funciónunpack_response()
actualizada se vería así:En esta función actualizada, el bucle while se ejecutará indefinidamente hasta que se reciba una respuesta que contenga “meta”, momento en el cual la función devolverá la respuesta. En cada iteración del bucle, se llamará a la función
api_call()
y se asignará la nueva respuesta aapi_response
.Al mover el código que asigna
api_response
dentro del bucle while, la función llamará continuamente a la otra función y permitirá determinar cuándometa
aún está enapi_response
.