2012-03-13 60 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

相關問題