Python为什么使用模块?

Python为什么使用模块?,python,module,Python,Module,为什么python使用模块,而不是只在主语言中包含模块函数。这将是非常有用和非常简单的,特别是对于random、re和os这样的主要应用程序。如果Python鼓吹简单和极简主义,那么为什么还要编写额外的代码行呢?1)Python之禅19:“名称空间是一个非常好的主意,让我们做更多的事情吧!” 命名模块很好,因为它们消除了同名函数之间发生冲突的任何机会。如果所有内容都是内置的,那么os.error()将与logging.error()发生冲突(并且,上天禁止您尝试定义自己的名为error())的函

为什么python使用模块,而不是只在主语言中包含模块函数。这将是非常有用和非常简单的,特别是对于random、re和os这样的主要应用程序。如果Python鼓吹简单和极简主义,那么为什么还要编写额外的代码行呢?

1)Python之禅19:“名称空间是一个非常好的主意,让我们做更多的事情吧!”

命名模块很好,因为它们消除了同名函数之间发生冲突的任何机会。如果所有内容都是内置的,那么
os.error()
将与
logging.error()
发生冲突(并且,上天禁止您尝试定义自己的名为
error()
)的函数)

与内置的
int()
函数和
random.int()
函数相同。您必须将后者编写为
random\u int()
,这与模块语法一样多。为什么不显式地使用名称空间并使用模块呢

这与反对os import*中的语法
的原因相同——它污染了您的命名空间,并引入了令人兴奋的名称冲突错误的机会

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

您个人编写的大多数程序都涉及
os
re
。就我个人而言,我在过去三个月里写的每一个脚本都涉及
sqlite3
csv
日志记录
。对于任何Python程序员编写的每一个程序,是否应该将它们作为内置项包括在内


过了一段时间,你的内置程序列表就会比Ben Hur更大。

1)Python的Zen 19:“名称空间是一个非常好的主意——让我们做更多的吧!”

命名模块很好,因为它们消除了同名函数之间发生冲突的任何机会。如果所有内容都是内置的,那么
os.error()
将与
logging.error()
发生冲突(并且,上天禁止您尝试定义自己的名为
error()
)的函数)

与内置的
int()
函数和
random.int()
函数相同。您必须将后者编写为
random\u int()
,这与模块语法一样多。为什么不显式地使用名称空间并使用模块呢

这与反对os import*
中的语法
的原因相同——它污染了您的命名空间,并引入了令人兴奋的名称冲突错误的机会

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

您个人编写的大多数程序都涉及
os
re
。就我个人而言,我在过去三个月里写的每一个脚本都涉及
sqlite3
csv
日志记录
。对于任何Python程序员编写的每一个程序,是否应该将它们作为内置项包括在内


过了一段时间,你的内置列表就会比Ben-Hur更大。

内存和速度效率

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


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

内存和速度效率

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


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

有些程序可能不需要使用这些模块。为什么要在程序中使用不打算使用的代码?虽然这是事实,但很多程序都使用re、os或随机模块,而python中一些比较晦涩的函数使用得更少“名称空间是一个非常好的主意--让我们做更多的吧!”-我几乎从不在生产代码中使用
re
模块或
random
模块,为什么我要在我的命名空间中使用这些垃圾?仅仅因为您经常使用这些模块并不意味着其他所有人都会使用这些模块。将易于分离的库放入语言的核心是简单性的反面。不必说“import re”并不是简单的意思。有些程序可能不需要使用这些模块。为什么要在程序中使用不打算使用的代码?虽然这是事实,但很多程序都使用re、os或随机模块,而python中一些比较晦涩的函数使用得更少“名称空间是一个非常好的主意--让我们做更多的吧!”-我几乎从不在生产代码中使用
re
模块或
random
模块,为什么我要在我的命名空间中使用这些垃圾?就因为你用了那些mo