爲什麼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. 爲什麼用--with模塊
- 2. 爲什麼我必須使用python中的email模塊「從模塊導入」?
- 3. 爲什麼要使用Angular模塊?
- 4. 爲什麼導入python模塊不導入嵌套模塊?
- 5. 使用什麼Perl模塊?
- 6. 爲什麼在ES6模塊上使用模塊捆綁器?
- 7. 是什麼使模塊成爲實用模塊?
- 8. 爲什麼python pacakge在Python 3.5中顯示爲模塊?
- 9. 爲什麼/我應該在什麼時候使用dojo模塊?
- 10. Python - 爲什麼導入子模塊會使包可見?
- 11. 爲什麼模塊衝突?
- 12. 爲什麼要避免使用字符串模塊並在Python中使用str?
- 13. 爲什麼從python塊調用ffmpeg?
- 14. 使用模塊模式,爲什麼引用是未定義的?
- 15. 爲什麼使用Python-YQL模塊將sys.path [0]更改爲sys.path [1]?
- 16. 在線程模塊中使用python中的Eventlet模塊有什麼好處?
- 17. 使用python模塊
- 18. 爲什麼Python readline模塊在OS X上不可用?
- 19. 爲什麼__dir __()不適用於python中的模塊?
- 20. 爲什麼InstanceMethods模塊已被棄用?
- 21. 爲什麼模塊'ui.bootstrap'不可用?
- 22. 模塊已禁用 - 但爲什麼?
- 23. 爲什麼使用Python mmap模塊比從C++調用POSIX mmap要慢得多?
- 24. 爲什麼python可以將共享庫作爲模塊導入?
- 25. 命名python模塊有什麼要求?
- 26. 什麼是python __all__模塊級變量?
- 27. 什麼是安裝Python模塊或包?
- 28. 什麼是Python中的頂級模塊?
- 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