2013-01-08 49 views
0

首先謝謝,我知道堆棧溢出是充滿了這個論點(但我們可以考慮審查問題)。我有一些關於組織Python項目的問題。Python:建議如何組織一個Python項目。一些問題

從這個link我必須找到這個漂亮的架構

/myproject 
    /__init__.py # This makes it a Python package and importable. 
    /evaluate.py # Contains the code to actually do calculations. 
    /main.py # Starts the application 
    /ui.py # Contains the code to make a pretty interface 

從這個web site__init__.py通常是空的

我的問題是:

  1. 假設你有一個函數(DEF富) 。 foo位於 evaluate.py或main.py?
  2. if foo位於main.py(或evaluate.py)什麼evaluate.py(或 main.py)包含?
  3. 有時我發現utilities.py和/或module.py。什麼utilities.py/module.py包含?

在此先感謝

+0

我喜歡相信形式遵循功能。你的項目將決定如何組織它。你的例子有兩個組件,一個用戶界面和一個計算,所以這裏有2個py文件,剩下的就是膠水把它們放在一起。至於你的foo去哪裏,它是一個計算foo還是ui foo。最後,無處不在的輔助函數通常在common.py或utilities.py中。 – kalhartt

+0

計算=評估? –

+4

我不認爲這個例子是從字面上理解的。它用來說明一個人不會創建模塊來保存單獨的類或其他東西,而是包含用於包含邏輯組的模塊。 – delnan

回答

1

從我的編碼風格: main.py:經常做簡單的事情有關初始化從外面ENVIRON和加載配置文件變量。幷包裝實際的邏輯事物。例如:

from evaluate import actual_things 
def run(): 
    ... 
    actual_things() 
    ... 

if __name__ == '__main__': 
    init() 
    load_from_config() 
    run() 

問:有時候我發現utilities.py和/或module.py。什麼utilities.py/module.py包含? - 答:utilities.py:或utils.py通常是幫手。如編碼和解碼,加密等。

問:如果foo位於main.py(或evaluate.py)什麼evaluate.py(或main.py)包含? 答:你可以指出foo做什麼,根據foo的功能,我們找到foo到某個地方。如果foo是一個相對功能的業務,foo應該位於evaluate.py中。

問:假設你有一個函數(def foo)。 foo位於evaluate.py或main.py中? A:見上。

最後,我認爲最好的方法是全面學習一個項目。你會知道QA不能提供什麼幫助。