本文首先介紹了Python中的模塊的概念,談到了一個模塊往往由多個模塊組成,然后通過具體實例,分析了模塊重載的相關內容,具體介紹如下。
模塊是Python程序架構的一個核心概念,較大的程序往往以多個模塊文件的形式呈現,一個模塊被設計成主文件或頂層文件,用來啟動整個Python程序。每個以.py為后綴的Python源代碼文件都是一個模塊,其他文件可通過“導入”讀取這個模塊的內容。從一般意義上講,模塊就是變量名的封裝。如寫一個模塊test.py,包含一個兩個變量名name、age。
name='Aidan' age=27
那么,通過在Python命令行中執行下述命令
import test print(test.name, test.age)
可以得到結果:Aidan 27
函數dir(modelname)可以用來獲取模塊內部可用的變量名,其中會包含一些Python內置的變量名如'__doc__、__file__'。
一個Python程序往往由多個模塊組成,通過import連接。每個模塊文件都是一個命名空間,看不到其他模塊文件的變量名,除非通過import導入了那個文件或者通過from model import varible導入某個變量。這樣就避免了變量命名的沖突,因為每個模塊都是獨立的命名空間,類似于C語言里一個個函數和其局部變量。
從本質上,“導入”就是在一個文件中載入另一個文件的內容,從而使另一個文件能夠被放在外部世界使用,指令就是import name.py。導入只在每次會話的第一次執行有效果,后續再多次導入同一個文件時無效的,即使文件發生了更改,這是因為第一次導入時就將文件編譯成了字節碼。導入模塊必須知道模塊的詳細路徑(文件搜索,可通過sys.path中PYTHONPATH變量指明所有需要搜索的目錄),因此為了簡單,將所有需要導入的文件放在同一個目錄。
若想在同一次會話中多次運行同一個文件(或文件發生改變、必須重載),那就需要調用“重載”函數-reload(name),調用reload函數前請確保已經通過import成功導入了該模塊。看清“函數”reload()和“語句”import的區別,reload()是一個函數、參數就是已導入的文件模塊文件名,import是一個語句、不需要括號。Python的重載功能允許用戶在交互過程中編輯并改進代碼模塊,因此為了確保運行的是最新的代碼,首先使用reload()。
flask 在調試時,如果我們對文件有所修改,服務器就會重新啟動,而無需我們停下服務器再重新啟動,這里面就暗藏了一個重載的機制。
下面用一個簡單的例子,來解釋python如何重載一個模塊
新建一個名為reloadsetting.py 的文件,內容很簡單:
#coding=utf-8 ''''' Created on 2016-3-25 @author: Administrator ''' msg = 'change it '
新聞熱點
疑難解答