¿Por qué la clase subprocess.Popen no se llama Subproceso?[cerrado]
-
09-06-2019 - |
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
?
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.