Por que a classe subprocess.Popen não é chamada de Subprocess?[fechado]
-
09-06-2019 - |
Pergunta
A classe primária do subprocess
módulo é nome Popen
, e representa um subprocesso. Popen
parece que alguém estava tentando forçar o nome a seguir algum formato de nomenclatura de função, em vez de escolher um nome que realmente representasse o que o objeto é.Alguém sabe por que foi escolhido em vez de algo simples como, digamos, Subprocess
?
Solução
Bem, não estou dizendo que este seja o maior nome do mundo, mas aqui estava a ideia tal como a entendo.
Originalmente, a família popen estava no módulo os e era uma implementação do venerável posix popen.A mudança para o módulo subprocesso teria sido um momento oportuno para renomeá-los, mas acho que manter Popen torna mais fácil encontrá-lo nos documentos para aqueles que têm uma longa história com python ou mesmo com as veneráveis funções posix.
Desde sua primeira encarnação posix, Popen
sempre foi criado para abrir um processo e permitir que você leia e escreva em seu stdio como um arquivo.Assim, o mnemônico para Popen
é que é curto para ProcessOpen
em uma tentativa de parecer aberto.
Outras dicas
subprocess.Popen
substitui o grupo de os.popenX
Funções POSIX (que têm uma longa história).Suponho que o nome Popen
torna mais provável que as pessoas acostumadas com as funções antigas encontrem e usem as novas.
O PEP para subprocesso (PEP 324) tem um pouco de discussão sobre o nome do módulo, mas não da classe Popen
.O lista de PEPs (Propostas de aprimoramento do Python) é, em geral, um excelente lugar para começar se você estiver procurando a justificativa para os recursos do Python.
Suponho que o nome foi escolhido porque a funcionalidade subprocess
está substituindo estava anteriormente no os
módulo como o os.popen
função.Poderia haver até maneiras de automatizar a migração entre os dois.