为什么python使用模块,而不是仅仅包含主要语言的模块函数。这将是非常有用和非常容易的,特别是对于诸如random,re和os等主要的。如果Python鼓吹简单性和极简主义,那么为什么还要写额外的代码行呢?为什么Python使用模块?
回答
1)的Python的#19禅宗:“命名空间是一个鸣喇叭的伟大构想 - 让我们做更多的这些!”因为他们消除同名函数之间的冲突的任何机会
命名模块都不错。如果一切是一个内置的,然后os.error()
将与logging.error()
碰撞(和但愿你尝试定义你叫error()
自己的功能!)
同上内建int()
功能和random.int()
功能。您必须将后者编写为random_int()
,这与模块语法一样多。为什么不明确命名空间并使用模块?
这是一样的道理语法是不可取的 - 它污染您的命名空间,并介绍了令人兴奋的名称冲突错误的机会。
2)谁决定什么是内置的,什么是一个模块?
您亲自编写的大多数程序涉及os
和re
。我个人在过去三个月中编写的每个剧本都涉及sqlite3
,csv
和logging
。如果那些Python程序员曾经写过的每个程序都包含这些内置函数?
过了一会儿,你内建命令列表变得比宾虚更大。
已创建(和一切是在Python对象)存储和速度效率
对象占据分配给Python解释过程中的存储器中。当你导入一个模块时,它的代码被执行,导致许多对象(函数,类,数据等)的创建,其中大多数对象必须在内存中保持有用。通过将功能分为逻辑上不同的模块,我们允许程序将其内存仅用于提供所需功能的对象。
如果一切都内置了,你将有一个内存致力于向所有的类,函数等整个标准库的对象,不到1%,这实际上是将平均程序有用大块。此外,每次解释器启动时,您都会浪费时间执行所有创建所有这些对象的代码。
+1洞察力。 – 2012-03-13 06:05:53
- 1. 为什么要使用Angular模块?
- 2. 为什么导入python模块不导入嵌套模块?
- 3. 使用什么Perl模块?
- 4. 是什么使模块成为实用模块?
- 5. 为什么python pacakge在Python 3.5中显示为模块?
- 6. 为什么模块冲突?
- 7. 为什么从python块调用ffmpeg?
- 8. 使用模块模式,为什么引用是未定义的?
- 9. 为什么使用Python-YQL模块将sys.path [0]更改为sys.path [1]?
- 10. 在线程模块中使用python中的Eventlet模块有什么好处?
- 11. 为什么Python readline模块在OS X上不可用?
- 12. 为什么InstanceMethods模块已被弃用?
- 13. 为什么模块'ui.bootstrap'不可用?
- 14. 为什么使用Python mmap模块比从C++调用POSIX mmap要慢得多?
- 15. 什么是python __all__模块级变量?
- 16. 什么是冻结的Python模块?
- 17. 为php模块选择什么模式?
- 18. 为什么使用python
- 19. 在Python中使用什么模块与cURL相同?
- 20. 我应该使用什么Python模块进行更新?
- 21. 为什么需要使用'import'语句显式导入* built-in * python模块'sys'?
- 22. 帮我理解为什么我使用Python的ctypes模块失败
- 23. 为什么我不能在emacs中使用自动完成的python模块
- 24. 为什么我不能在Linux中使用Jython导入Python模块的“信号”?
- 25. 为什么在使用Python Requests模块后我失去了网页的功能?
- 26. 为什么角模块可以使用其他模块的依赖关系?
- 27. 为什么'__main__'中的导入模块不允许multiprocessig使用模块?
- 28. 为什么python多处理模块导致CPU完全耗尽?
- 29. 为什么python将导入的模块附加到包中?
- 30. Python:为什么不加载此子模块?
某些程序可能不需要使用这些模块。你为什么要在你的程序中不使用代码? – 2012-03-13 03:34:26
虽然这是事实,许多,许多程序使用重新,OS,或随机的模块,而一些在Python中比较模糊的功能是用来少得多 – Billjk 2012-03-13 03:39:06
“命名空间是一个鸣喇叭的伟大构想 - 让我们做更多的这些!” - http://www.python.org/dev/peps/pep-0020/ – monkut 2012-03-13 03:39:23