云計算開發(fā)學習筆記:Python3深入模塊
模塊除了方法定義,還可以包括可執(zhí)行的代碼。這些代碼一般用來初始化這個模塊。這些代碼只有在第一次被導入時才會被執(zhí)行。
每個模塊有各自獨立的符號表,在模塊內部為所有的函數當作全局符號表來使用。所以,模塊的作者可以放心大膽的在模塊內部使用這些全局變量,而不用擔心把
其他用戶的全局變量搞混。從另一個方面,當你確實知道你在做什么的話,你也可以通過 modname.itemname 這樣的表示法來訪問模塊內的函數。
模塊是可以導入其他模塊的。在一個模塊(或者腳本,或者其他地方)的最前面使用 import 來導入一個模塊,當然這只是一個慣例,而不是強制的。被導入的模
塊的名稱將被放入當前操作的模塊的符號表中。
還有一種導入的方法,可以使用 import 直接把模塊內(函數,變量的)名稱導入到當前操作模塊。比如:
這種導入的方法不會把被導入的模塊的名稱放在當前的字符表中(所以在這個例子里面,fibo 這個名稱是沒有定義的)。
這還有一種方法,可以一次性的把模塊中的所有(函數,變量)名稱都導入到當前模塊的字符表:
這將把所有的名字都導入進來,但是那些由單一下劃線(_)開頭的名字不在此例。大多數情況, Python程序員不使用這種方法,因為引入的其它來源的命名,
很可能覆蓋了已有的定義。
__name__屬性
一個模塊被另一個程序第一次引入時,其主程序將運行。如果我們想在模塊被引入時,模塊中的某一程序塊不執(zhí)行,我們可以用__name__屬性來使該程序塊僅在
該模塊自身運行時執(zhí)行。
運行輸出如下:
說明:每個模塊都有一個__name__屬性,當其值是'__main__'時,表明該模塊自身在運行,否則是被引入。
說明:__name__ 與 __main__ 底下是雙下劃線, _ _ 是這樣去掉中間的那個空格。