为什么subprocess.Popen类没有命名为Subprocess?

时间:2020-03-05 18:46:04  来源:igfitidea点击:

"子进程"模块中的主要类是名称" Popen",它代表一个子进程。 " Popen"听起来好像有人试图强迫名称遵循某种函数命名格式,而不是选择实际上代表对象的名称。有谁知道为什么选择像Subprocess这样的简单东西吗?

解决方案

回答

我想选择这个名称是因为替换子功能的功能以前是在os模块中作为os.popen功能。甚至可能存在自动进行两者之间迁移的方法。

回答

subprocess.Popen替换了os.popenX POSIX函数组(历史悠久)。我想,Popen这个名字使习惯于旧功能的人更有可能找到并使用新功能。

子流程的PEP(PEP 324)对模块名称进行了一些讨论,但没有对类" Popen"的讨论。如果我们正在寻找Python功能的基本原理,那么PEP(Python增强建议)列表通常是一个很好的起点。

回答

现在,我并不是说这是世界上最伟大的名字,但据我所知这就是想法。

最初,popen系列位于os模块中,并且是古老的posix popen的实现。转移到子进程模块是重命名它们的最佳时机,但是我想保留Popen可以使他们在python中拥有悠久的历史,甚至是古老的posix函数的文档更容易找到。

从其最早的posix化身开始,Popen一直旨在打开一个进程,并允许我们像文件一样从其stdio进行读写。因此,Popen的助记符是ProcessOpen的缩写,试图使之看起来像是开放的。