es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

python – ¿Cuál es la diferencia entre escribir con AsyncGenerator o AsyncIterator?

Estoy creando una biblioteca asincrónica de Discord que está completamente tipada.
Tengo un método que crea objetos a partir de solicitudes de obtención de aiohttp, como el siguiente ejemplo:

async def get_bans(self):
    '''
    |coro|
    Obtiene todas las prohibiciones en el gremio.
    '''
    data = await self._http.get(f"guilds/{self.id}/bans")
    for ban_data in data:
        yield Ban.from_dict(construct_client_dict(self._client, ban_data))

Me preguntaba sobre el tipo de retorno de este fragmento de código y si debería ser un AsyncGenerator[Ban, None] o un AsyncIterator[Ban, None]. Para ser honesto, he estado buscando un poco y no pude encontrar ninguna información que me diera una idea clara sobre el tema.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Python y escribir código, el tipo de retorno del fragmento de código proporcionado debería ser AsyncIterator[Ban].

    Un generador asíncrono es un tipo de iterador asíncrono que produce una secuencia de valores de forma asíncrona. Utiliza la declaración async for para obtener los valores del generador asíncrono. Sin embargo, en el fragmento de código dado, se utiliza la declaración yield para producir y devolver valores individuales uno a la vez. Por lo tanto, en este caso es más adecuado un iterador asíncrono.

    Además, no es necesario incluir None como segundo parámetro de tipo para iteradores o generadores que no tienen un tipo de retorno. Por lo tanto, el tipo de retorno simplemente puede ser AsyncIterator[Ban].

Comments are closed.