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

时间:2008-09-01 17:40:52

标签: python subprocess

subprocess模块中的主要类是名称Popen,表示子进程。 Popen听起来有人试图强制名称遵循一些函数命名格式,而不是选择一个实际代表对象的名称。有没有人知道为什么选择简单的东西,比如Subprocess

3 个答案:

答案 0 :(得分:8)

现在,我并不是说这是世界上最伟大的名字,但这是我理解的想法。

最初,popen家族是在os模块中,并且是一个古老的posix popen的实现。向子进程模块的移动是重命名它们的合适时机,但我想保持Popen可以更容易地在文档中找到那些与python有着悠久历史甚至是古老的posix函数的人。

从其最早的posix化身开始,Popen一直意味着打开一个进程,并允许您像文件一样从其stdio中读取和写入。因此Popen的助记符是ProcessOpen的缩写,试图使其看起来像是开放的。

答案 1 :(得分:5)

subprocess.Popen替换了os.popenX POSIX函数组(历史悠久)。我认为名称Popen使得习惯旧功能的人更有可能找到并使用新功能。

PEP for subprocess (PEP 324)对模块名称进行了一些讨论,但没有讨论类Popen。如果您正在寻找Python功能的基本原理,list of PEPs(Python增强建议)通常是一个很好的起点。

答案 2 :(得分:-1)

我认为选择名称是因为subprocess替换的功能以前在os模块中作为os.popen函数。甚至可能有两种方法可以自动化两者之间的迁移。