subprocess
模块中的主类为名称Popen
,表示子过程。 Popen
听起来像有人试图强制名称遵循一些函数命名格式,而不是选择实际代表对象的名称。有谁知道为什么它被选择在简单的东西上,比如说Subprocess
?为什么subprocess.Popen类未命名为Subprocess?
3
A
回答
7
现在,我不是说这是世界上最伟大的名字,而是我理解它的想法。
最初,popen家族是在os模块中,并且是一个令人尊敬的posix popen的实现。移动到子进程模块本来是重新命名它们的好时机,但我想保留Popen可以更容易地找到那些在python中拥有悠久历史的人员的文档,甚至可以在那些文档中找到令人敬畏的posix函数。
从它最早的posix化身,Popen
一直打算打开一个进程,并允许您读取和写入它的stdio像一个文件。因此,Popen
的助记符是ProccesOpen
的简写,用于尝试某种看似开放的类型。
-1
我想选择这个名字是因为功能subprocess
正在取代之前在os
模块中作为os.popen
函数。甚至可以有两种方法来实现两者之间的迁移自动化。
5
subprocess.Popen
代替os.popenX
POSIX函数组(历史悠久)。我想Popen
这个名称使旧习惯的人更容易找到并使用新功能。
PEP for subprocess (PEP 324)对模块的名称有一点点的讨论,但对Popen
没有。如果您正在寻找Python功能的基本原理,那么list of PEPs(Python增强提议)通常是一个很好的开始。
相关问题
- 1. 为什么命名函数在未命名时不起作用?
- 2. 为什么命名不同?
- 3. 为什么ISeq的“更多”未命名为“休息”?
- 4. 为什么subprocess.Popen与shell命令有奇怪的格式?
- 5. 为什么case class被命名为'case'?
- 6. 为什么Node.js命名为Node.js?
- 7. 为什么不将Array.prototype.some命名为.any?
- 8. 为什么log4j重命名文件名?
- 9. 为什么没有为命名指针类型定义方法?
- 10. 为什么为django模型类命名参数
- 11. 为什么构造函数在未命名的命名空间中失败?
- 12. 为什么irc发送“命令未知”?
- 13. 为什么didFindPlacemark从未命中?
- 14. 命名空间未定义或重新定义,为什么?
- 15. 什么是'命名类型'
- 16. os.popen命令转换为subprocess.Popen实例
- 17. 为什么Covariance和Contravariance这样命名?
- 18. 为什么要命名返回参数?
- 19. RAII为什么如此命名?
- 20. 为什么没有Microsoft.Win64命名空间?
- 21. 为什么我不能重命名列?
- 22. 为什么ASCII以大写命名?
- 23. 为什么在并列命名juxt?
- 24. 为什么在.NET中命名线程?
- 25. 为什么命名List'1.cs
- 26. 为什么文件名在网络中被命名为
- 27. 为什么Microsoft.Z3程序集未签名?
- 28. 为什么dart可选的命名参数不为空(如果未提供)?
- 29. 为什么System.Web.UI命名空间中的ObjectStateFormatter类?
- 30. 为什么UISwitch只有在重命名类时才可见?