为什么subprocess.Popen类未命名为Subprocess?
问题描述:
subprocess
模块中的主类为名称Popen
,表示子过程。 Popen
听起来像有人试图强制名称遵循一些函数命名格式,而不是选择实际代表对象的名称。有谁知道为什么它被选择在简单的东西上,比如说Subprocess
?为什么subprocess.Popen类未命名为Subprocess?
答
现在,我不是说这是世界上最伟大的名字,而是我理解它的想法。
最初,popen家族是在os模块中,并且是一个令人尊敬的posix popen的实现。移动到子进程模块本来是重新命名它们的好时机,但我想保留Popen可以更容易地找到那些在python中拥有悠久历史的人员的文档,甚至可以在那些文档中找到令人敬畏的posix函数。
从它最早的posix化身,Popen
一直打算打开一个进程,并允许您读取和写入它的stdio像一个文件。因此,Popen
的助记符是ProccesOpen
的简写,用于尝试某种看似开放的类型。
答
我想选择这个名字是因为功能subprocess
正在取代之前在os
模块中作为os.popen
函数。甚至可以有两种方法来实现两者之间的迁移自动化。
答
subprocess.Popen
代替os.popenX
POSIX函数组(历史悠久)。我想Popen
这个名称使旧习惯的人更容易找到并使用新功能。
PEP for subprocess (PEP 324)对模块的名称有一点点的讨论,但对Popen
没有。如果您正在寻找Python功能的基本原理,那么list of PEPs(Python增强提议)通常是一个很好的开始。