包、模塊及 `__name__ ==“main“`

包、模塊及 __name__ =="main"

代碼組織方式

module模塊式組織代碼的基本方式;當.py腳本被import導入,將其稱爲模塊module,所有的.py文件都可以理解爲一個模塊。
模塊名與腳本.py文件同名,如 items.py作爲模塊import其他腳本中import items

Python模塊可以按照目錄組織爲包Package。包是一堆按照目錄組織的模塊和子包,目錄下的__init__.py文件存放了包的信息,創建一個包package的步驟是:
–建立一個名字爲package name的文件夾;
–在該文件夾下創建一個__init__.py文件(可以爲空);
–跟句需要在該文件夾下存放 腳本文件.py、已編譯擴展及子包 .pyc .pyo(編譯後的2類文件也可以作爲module導入)

# case
cal.py文件中定義了 + - * /幾種算數運算函數jia(),jian(),cheng(),chu()
在usecal.py文件中調用算數運算的方法是:
import cal
cal.jia()
cal.jian()

問題思考?

但是會涉及一個問題,導入的模塊內部本身可能已經定義了一些函數調用的執行(當其自身作爲主函數main執行時),但當作爲模塊導入給其他py腳本時並不想執行module內的函數調用語句,如何解決?

也就是要區分 主調用方式python a.py執行,與被 import 執行的不同

揭曉答案啦,思考過後再看哦

使用Python的一個內置屬性,可以在module的py代碼中加入 print(__name__),通過執行可以看出當module.py文件自身作爲main主腳本執行時,__name__ ="main", 當作爲module導入給其他腳本時,__name__= module_Name.

if __name__ =="__main__"
	statements

py腳本的執行機制:無論是import引用,還是python a.py方式,都會從腳本第一行開始向下執行完,但只有當python a.py的主調用方式時,會執行 if __name__ =="__main__" .

*注意:因此如果腳本中有函數調用或操作數據,import時會執行到,但你並不知道,這種調試也很難發現,很隱蔽難以定位,這也是Python編程規範要避免的。

提取公共庫module模塊

如果很多函數經常用到的話,可以把他們封裝到一個py文件中,然後通過調用模塊的方式,導入這些函數。當模塊文件很多,或者幾個模塊功能類似,就可以用包package來組織代碼。

導入的時候 import 包名.模塊名
import導入的3種常用方式:
import moduleName
import moduleName as nickName
from moduleName import funcName    //此種import方式,func可以直接使用無需moduleName.func()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章