2012-03-13 58 views
1

为什么python使用模块,而不是仅仅包含主要语言的模块函数。这将是非常有用和非常容易的,特别是对于诸如random,re和os等主要的。如果Python鼓吹简单性和极简主义,那么为什么还要写额外的代码行呢?为什么Python使用模块?

+3

某些程序可能不需要使用这些模块。你为什么要在你的程序中不使用代码? – 2012-03-13 03:34:26

+0

虽然这是事实,许多,许多程序使用重新,OS,或随机的模块,而一些在Python中比较模糊的功能是用来少得多 – Billjk 2012-03-13 03:39:06

+6

“命名空间是一个鸣喇叭的伟大构想 - 让我们做更多的这些!” - http://www.python.org/dev/peps/pep-0020/ – monkut 2012-03-13 03:39:23

回答

15

1)的Python的#19禅宗:“命名空间是一个鸣喇叭的伟大构想 - 让我们做更多的这些!”因为他们消除同名函数之间的冲突的任何机会

命名模块都不错。如果一切是一个内置的,然后os.error()将与logging.error()碰撞(和但愿你尝试定义你叫error()自己的功能!)

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

这是一样的道理语法​​是不可取的 - 它污染您的命名空间,并介绍了令人兴奋的名称冲突错误的机会。

2)谁决定什么是内置的,什么是一个模块?

您亲自编写的大多数程序涉及osre。我个人在过去三个月中编写的每个剧本都涉及sqlite3,csvlogging。如果那些Python程序员曾经写过的每个程序都包含这些内置函数?

过了一会儿,你内建命令列表变得比宾虚更大。

4

已创建(和一切是在Python对象)存储和速度效率

对象占据分配给Python解释过程中的存储器中。当你导入一个模块时,它的代码被执行,导致许多对象(函数,类,数据等)的创建,其中大多数对象必须在内存中保持有用。通过将功能分为逻辑上不同的模块,我们允许程序将其内存仅用于提供所需功能的对象。

如果一切都内置了,你将有一个内存致力于向所有的类,函数等整个标准库的对象,不到1%,这实际上是将平均程序有用大块。此外,每次解释器启动时,您都会浪费时间执行所有创建所有这些对象的代码。

+0

+1洞察力。 – 2012-03-13 06:05:53

相关问题