4

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

4

3 回答 3

8

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

最初,popen 系列位于 os 模块中,是古老的 posix popen 的实现。移动到 subprocess 模块本来是重命名它们的好时机,但我想保留 Popen 可以让那些在 python 甚至是古老的 posix 函数方面有悠久历史的人更容易在文档中找到。

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

于 2008-09-01T17:57:42.633 回答
5

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

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

于 2008-09-01T17:50:26.473 回答
-1

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

于 2008-09-01T17:47:07.853 回答