Estoy leyendo PEP-3153, pero no entiendo cuál es el problema que quiere abordar. ¿Podría explicarme?¿Qué es una cofunción y cómo funcionaría en Python?
Respuesta
Puede buscar en Google "coroutines de Python" y obtener mucha información útil. Here is a presentation (PDF) Me encontré con que hace un tiempo me pareció muy bueno sobre cómo y por qué. El source code is also available (esto incluye el PDF, así que si quieres los dos, simplemente descarga esto). El home page para esta presentación tiene enlaces a los archivos fuente individuales.
+1 para el enlace de presentación. Gran lectura. – RHSeeger
¿Sabes qué es un generador? Una función que puede detener su procesamiento para que pueda devolver ("ceder") un valor antes de reanudarse para producir el siguiente.
Bueno, una coroutine (aunque el PEP usa el término "cofunction") es así, excepto que nunca necesita ceder nada, y puede transferirse a otra corutina (un "cocall" en el idioma del PEP). Hay todo tipo de usos de esta capacidad, como ser capaz de construir lo que es esencialmente tu propia herramienta de enhebrado cooperativo ligero además de esto (he visto algunas bibliotecas de plantillas muy ordenadas hechas de esta manera también) aunque eso es particularmente útil cuando puedes transferencia entre funciones llamadas desde corutinas también.
Tenga en cuenta que hay nada que requiera coroutines. Siempre puede escribir el código de una manera diferente y prescindir de ellos. A veces es mucho más complicado hacerlo (debido a la necesidad de una administración estatal más explícita).
La propuesta de cofunciones es solo una limpieza de las instalaciones de corotinas existentes de python, que hasta ahora se basaban en generadores (algo relacionado con el canonical presentation). El PEP explica el motivations: hacer que los mensajes de error sean más explícitos, evitando la posibilidad de determinar si una función es un generador por la presencia de la palabra clave yield, y facilitando la delegación entre corutinas.
- 1. ¿Cómo funcionaría el código MVC en Node.js?
- 2. ¿Qué es una expresión en Python?
- 3. ¿Qué es una lista instrumentada en Python?
- 4. ¿Haxe funcionaría para crear bibliotecas?
- 5. ¿Qué es "\ 00" en Python?
- 6. ¿Qué es 'imprimir' en Python?
- 7. ¿Qué es una función manejar y cómo es útil?
- 8. ¿Por qué la impresión no es una función en python?
- 9. AJAX de dominios cruzados: ¿funcionaría este método?
- 10. ¿Qué es y qué no es una historia de usuario?
- 11. ¿Por qué ImageView.setImageURI() funcionaría en Android 2.2 pero no en 2.1?
- 12. Lista confusa [...] en Python: ¿qué es?
- 13. ¿Qué es una clase parcial?
- 14. ¿Qué es un "método" en Python?
- 15. ¿Qué es y = y | =
- 16. ¿Cómo reconocer qué es y qué no es recursividad final?
- 17. Excepciones de Python: EAFP y ¿Qué es realmente excepcional?
- 18. ¿Por qué el yo solo es una convención y no una verdadera palabra clave de Python?
- 19. ¿Qué es importar gv en python?
- 20. ¿Qué es "binding lambda" en Python?
- 21. ¿Cómo se maneja __eq__ en Python y en qué orden?
- 22. ¿Qué es "almacenamiento local de subprocesos" en Python, y por qué lo necesito?
- 23. ¿Qué es Jython y es útil en absoluto?
- 24. Qué es una clase de contrato y cómo se usa
- 25. ¿Qué es un huevo de Python?
- 26. ¿Qué es = y en PHP?
- 27. ¿Qué es una "trampa de anulación" y cómo la elimino?
- 28. Python paralelo: ¿Qué es una devolución de llamada?
- 29. ¿Qué es una página en SQL Server y debo preocuparme?
- 30. ¿Qué es [y] en C#?
No estás solo. Yo tampoco lo entiendo. – delnan