为什么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
的缩写,试图使之看起来像是开放的。