易混淆的Python类(如OS和SYS)命名背后的原因是什么?

3
我注意到stackoverflow上许多与Python相关的问题都涉及到人们搞混Sys类、OS类和无类。例如,一个容易混淆的例子是:os.open("something")open("something")sys.open("something")。我还没有理解这些类的命名原因,也许只是一种演变。
以下是需要回答的问题:
  1. 我想知道它们为什么使用当前的名称?
  2. 是否由于某些类需要特殊权限而进行命名?
  3. 命名是否因为某些类中有FDs?
  4. 在多大程度上,命名是一种设计解决方案?
如果您无法回答这个问题,请随意建议一些好的助记符来记忆这些类并区分它们。

内置函数 open 没有所谓的“类”。它是一个函数,不是类的成员。在Python文档中,它被称为内置函数。以下是内置函数列表:http://docs.python.org/library/functions.html#built-in-functions 请修改您的问题以使用正确的名称,否则会令人困惑。 - S.Lott
2个回答

3
易于混淆的是:os.open("something"),open("something")和sys.open("something")。
“助记符”是在线文档或下载到您的工作站上的文档。
内置的“open”:http://docs.python.org/library/functions.html#open "打开文件" os.openhttp://docs.python.org/library/os.html#os.open "此函数用于低级I/O。" sys.open不存在。 io.openhttp://docs.python.org/library/io.html#io.open "在Python 3.x中,它是访问文件和流的默认接口"
“助记符”很容易。使用与您要求相匹配的那个。
它们以现有名称创建的原因是什么?
为了使语言简洁,并放在单独的库中。
是否由于在类中有FD(文件描述符)而进行命名?
可能。FD是一种操作系统特性,而不是语言特性。这就是为什么它们在单独的库中的原因。
是否由于某些类需要特殊权限而进行命名?
完全不是。
名称确定的设计解决方案程度如何?
为了使语言简洁,并放在单独的库中。

@hhh:请删除“New question analyzing just rings”评论。它与此答案或此问题没有任何关系,会造成困惑。请将其删除。 - S.Lott
它调查了像“此函数旨在进行低级I/O。”和特权这样的语句。我认为这对于这个问题来说太多了,最好提一个新问题。抱歉,但我想要理解你的答案真正涉及什么。低级别的东西是环还是其他什么还不清楚。在这里更深入地分析这些问题(https://dev59.com/81bTa4cB1Zd3GeqP7AzF)。 - hhh
@hhh:请集中注意力。一个问题或另一个问题。尽量避免在评论中的问题之间添加链接。在这个上下文中,“低级”与任何“环”无关。“环”只是权限。仅此而已。在这里,“低级”意味着操作系统级别(“低”)或Python库级别(“高”)。低级==操作系统级别==原始操作系统打开/关闭/读取/写入==没有Python解析或缓冲==字节级I/O。高级==Python库==Python解析和缓冲==Python字符串。 - S.Lott

2

内置函数是你经常需要的东西,使用它们时不需要导入任何模块,因此也不需要使用模块前缀。例如,open() 是一个这样的函数,因为打开文件是一个非常常见的操作。它会打开一个文件并返回一个易于使用的文件对象。

os 模块用于操作系统接口。 os.open() 是操作系统文件接口的原始接口。它会打开一个文件并返回裸的文件描述符,通常你不需要它来做什么。

sys 模块用于系统特定的事情。 sys.open() 不存在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接