subprocess
模块中的主要类是名称Popen
,表示子进程。 Popen
听起来有人试图强制名称遵循一些函数命名格式,而不是选择一个实际代表对象的名称。有没有人知道为什么选择简单的东西,比如Subprocess
?
答案 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
函数。甚至可能有两种方法可以自动化两者之间的迁移。