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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top