El Yield From Syntax establece una conexión directa entre la persona que llama y el subgenerador, lo que permite que los datos fluyan sin problemas entre ellos. A diferencia de los bucles for tradicionales, que solo pueden generar valores, el rendimiento de proporciona un canal bidireccional. Esto es análogo a establecer una conexión temporal entre sockets de cliente, permitiendo tanto la recepción como el envío de datos.
def reader():
"Simulates reading data from a source"
for i in range(4):
yield f"Al usar el rendimiento de, podemos iterar sobre el generador del lector sin manipular manualmente el bucle.
Ejemplo: envío de datos a una corrutina
def writer():
"Simulates writing data to a destination"
while True:
w = (yield)
print(f">>> {w}")
writer_wrapper = writer_wrapper(writer())
for i in range(4):
wrap.send(i) # Output: >>> 0, >>> 1, >>> 2, >>> 3
En este ejemplo, el rendimiento de la sintaxis permite que la función contenedora envíe datos a la corrutina escritor(), que establece un intercambio directo de datos.
Manejo de excepciones
Yield from también maneja la propagación de errores de forma transparente. Si el subgenerador encuentra una excepción, la persona que llama puede volver a generarla o manejarla dentro del subgenerador.
Ejemplo: manejo de excepciones con SpamException
class SpamException(Exception):
pass
def writer():
while True:
try:
w = (yield)
except SpamException:
print("***")
else:
print(f">>> {w}")
writer_wrapper = writer_wrapper(writer())
# Raising an exception within the wrapper
wrap.throw(SpamException)
# Expected Output: ***
El rendimiento de garantiza que las excepciones se propaguen sin problemas, sin la necesidad de un manejo manual de excepciones en la función contenedora.
Conclusión
El rendimiento de es una sintaxis poderosa que simplifica la implementación del intercambio de datos bidireccional entre la persona que llama y los subgeneradores, manejando excepciones sin problemas. Proporciona una forma transparente y eficiente de comunicarse entre estos componentes, lo que la convierte en una herramienta valiosa para abordar escenarios complejos de procesamiento de datos en Python 3.3 y versiones posteriores.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3