2009-08-02 70 views
11

我正在研究一個Python web應用程序,其中有一些小模塊可用於非常特定的功能:session.py,logger.py,database.py等等。而「小」我確實意味着小;這些文件中的每一個目前都包含大約3-5行代碼,或者最多可以包含10行代碼。我可能會有幾個導入和一個類定義或兩個。我想知道,是否有任何理由我應該或不應該將它們合併到一個模塊中,比如misc.pyPython:更喜歡幾個小模塊還是更大的模塊?

我的想法是,有單獨的模塊,代碼清晰幫助,後來,如果由於某些原因,這些模塊增長到超過10行,我就不會覺得那麼不好讓他們分開。但另一方面,看起來像是浪費了一大堆只有幾行文件的文件!多文件和單文件方法在資源使用方面是否存在顯着差異? (當然,我無處在那裏我應該擔心資源使用點附近,但我忍不住問...)

我檢查四周,看看這是否以前已經問過,並沒有看到任何特定於Python的東西,但如果它實際上是重複的,我會很高興被指向正確的方向。

+0

我還想補充一點,有許多獨立的模塊,(數據/執行)隱藏/封裝/幫助。 – 2016-12-28 13:59:49

回答

4

我的想法是,有獨立的 模塊,代碼的清晰度上有所幫助,並 後,如果由於某些原因,這些 模塊增長到超過10行,我 就不會覺得那麼不好讓他們 分離。

這個。保持它的方式。

+3

+1模塊是重用的單位。如果您可以考慮重複使用它,請將它分開。 – 2009-08-02 22:07:19

+2

導入模塊會導致文件查找/讀取操作,這非常昂貴。所以有一個不重要的應用程序啓動成本,有模塊。除非以壓縮模式分發您的代碼,否則擁有幾百個模塊將花費大約2-5秒的時間導入。 (如果從網絡導入則更多)。 – Kozyarchuk 2009-08-03 03:14:47

+1

「具有模塊的非平凡應用程序啓動成本」?真?我從未注意到。你有任何測量?你能否展示這種「不平凡」的成本?我們有一臺運行數天的網絡服務器。你是說,與100小時的運行時間相比,進口是可衡量的嗎? – 2009-08-03 12:17:29

3

我個人覺得更容易保持這樣的事情在一個文件中,只爲編輯在我的編輯的文件數量較少的實用性。

要做的重要事情是視爲不同的代碼段,就好像它們在不同的文件中一樣,所以您確保以後可以輕鬆地將它們分開,因爲您引用的原因。因此,例如,不要在不同的部分之間引入依賴關係,這將導致以後難以解決這些問題。

2

當然,你可以有任意多的模塊,只要你喜歡。

但現在讓儘可能想一點,當我們把每一小段代碼到一個單一的文件會發生什麼。

我們最終將在數百import語句在任何沒有價值的模塊。當然,你也可以通過在分離的文件中明確顯示來節省一點。但猜猜怎麼樣:沒人能記住這麼多模塊名稱,並且最終可能最終搜索正確的文件......

我嘗試將屬於一個的東西放在一個文件中(除非它變得很大!) 。但是當我的系統中有不屬於其他組件的小函數或類時,我有「util」模塊或類似的東西。我也嘗試按照我的應用程序分層對這些進行分組,或者通過其他方式將它們分開。一個單獨的標準可能是:用於UI的實用程序和那些沒有的實用程序。

4

隨着模塊的用戶,我非常喜歡時,我可以包括經由單個導入整個模塊。除非有理由允許導入不同的備選項,否則不要讓包的用戶進行多次導入。

順便說一句,我們沒有理由在單個模塊不能由多個源文件。最簡單的情況是使用__init__.py文件簡單地將所有其他代碼加載到模塊的名稱空間中。

0

小。

3

對於命令行腳本,有最有可能不會有太大的區別,除非每次調用調用模塊中的所有文件,在這種情況下會有輕微的性能代價爲n個文件需要打開VS之一。

對於mod_python的存在極有可能會是沒有區別的字節編譯的模塊爲Apache過程的持續時間活路。

谷歌應用程序引擎,雖然會有一個性能命中,除非該服務正在不斷使用,並且是「熱」,因爲每個冷啓動需要打開所有文件。