为什么Python使用模块?

时间:2012-03-13 03:31:31

标签: python module

为什么python使用模块,而不是仅仅包含主语言中的模块功能。这将是非常有用和非常简单的,特别是对于诸如random,re和os之类的主要内容。如果Python宣扬简单和极简主义,为什么还要编写额外的代码行?

2 个答案:

答案 0 :(得分:15)

1)Python的禅宗#19:“命名空间是一个很棒的主意 - 让我们做更多的事情!”

命名模块很好,因为它们消除了具有相同名称的函数之间发生冲突的可能性。如果所有内容都是内置的,则os.error()会与logging.error()发生冲突(天堂禁止您尝试定义自己的error()函数!)

同上内置int()函数和random.int()函数。您必须将后者写为random_int(),这与模块语法一样多。为什么不明确命名空间并使用模块?

这与语法from os import *不相符的原因相同 - 它会污染您的命名空间并引入令人兴奋的名称冲突错误。

2)谁决定什么是内置模块?什么是模块?

您亲自撰写的大部分程序都涉及osre。就个人而言,我在过去三个月中撰写的每篇剧本都涉及sqlite3csvlogging。是否应该将这些内容包含在任何Python程序员编写的每个程序中?

一段时间后,你的内置组件列表会比Ben Hur更大。

答案 1 :(得分:4)

内存和速度效率

已创建的对象(一切都是Python中的对象)占用分配给Python解释器进程的内存。导入模块时,会执行其代码,从而导致创建许多对象(函数,类,数据等),其中大部分必须在内存中保留才有用。通过将功能分离为逻辑上不同的模块,我们允许程序将其内存仅用于提供所需功能的对象。

如果所有内容都是内置的,那么整个标准库的所有类,函数和其他对象都会占用大量内存,其中不到1%实际上对普通程序有用。此外,每次解释器启动时,您都会浪费时间执行创建所有这些对象的所有代码。