Pregunta

La clase primaria en el subprocess el módulo es el nombre Popen, y representa un subproceso. Popen Parece que alguien estaba tratando de forzar que el nombre siguiera algún formato de nomenclatura de función, en lugar de elegir un nombre que realmente represente lo que es el objeto.¿Alguien sabe por qué se eligió en lugar de algo simple como, por ejemplo, Subprocess?

¿Fue útil?

Solución

Ahora, no estoy diciendo que este sea el nombre más grande del mundo, pero aquí estaba la idea tal como yo la entiendo.

Originalmente, la familia popen estaba en el módulo del sistema operativo y era una implementación del venerable posix popen.El paso al módulo de subproceso habría sido un momento oportuno para cambiarles el nombre, pero supongo que mantener Popen hace que sea más fácil de encontrar en los documentos para aquellos que tienen una larga historia con Python o incluso con las venerables funciones Posix.

Desde su primera encarnación posix, Popen siempre ha estado destinado a abrir un proceso y permitirle leer y escribir desde su stdio como un archivo.Así, la mnemónica para Popen es que es corto para ProcessOpen en un intento de parecer algo así como abierto.

Otros consejos

subprocess.Popen reemplaza al grupo de os.popenX Funciones POSIX (que tienen una larga historia).Supongo que el nombre Popen hace que sea más probable que las personas acostumbradas a las funciones antiguas encuentren y utilicen las nuevas.

El PEP para subproceso (PEP 324) tiene un poco de discusión sobre el nombre del módulo pero no de la clase Popen.El lista de PEP (Propuestas de mejora de Python) es, en general, un excelente lugar para comenzar si busca la justificación de las características de Python.

Supongo que el nombre fue elegido porque la funcionalidad subprocess está reemplazando estaba anteriormente en el os módulo como el os.popen función.Incluso podría haber formas de automatizar la migración entre los dos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top