2015-01-12 38 views
1

這是the Flask mega-tutorial.這個簡介燒瓶代碼是怎麼回事?

開放代碼讓我們創建一個簡單的init腳本我們的應用程序包(文件 應用程序/ 初始化的.py)開始:

from flask import Flask 

app = Flask(__name__) 
from app import views 

上面的腳本簡單創建應用程序對象(類 Flask),然後導入views模塊,我們還沒有編寫 。

我不確定這裏發生了什麼事。如果app是一個類的實例,我們如何使用import呢?行from app import views根本沒有意義。有人能幫我理解這裏發生了什麼嗎?爲什麼我們需要實例化一個類來導入一些東西?

回答

6

一個不幸的名字衝突! from app import模塊或包app(僅此代碼在本教程由mkdir app__init__.py在它的編輯之前創建的),無關變量名app這確實是指一個類的實例。

由於import this extolls最後一行,命名空間確實是一個偉大的事情 - 但是當他們隱含地使用(如fromimport,其名稱空間是從模塊完全分離),它可能是更好,減少混亂避免故意碰撞名字......因爲如果不這樣做,讀者的困惑幾乎是不可避免的。教程的作者應該特別小心!

+0

哦,現在非常清楚,作者是一個愚蠢的選擇!是不是所有的進口都在頂端?爲什麼他會在實例化應用程序後做到這一點?不是說你是作者,但是有什麼特別的推理可以想到嗎? – Aerovistae

+0

@Aerovistae視圖是在應用程序實例化後導入的,因爲它們依賴於應用程序,所以這避免了循環導入。這在文檔中提到,可能在教程中提到。繼續閱讀。 – davidism