python基礎:模組的搜尋路徑、pyc臨時檔案、內建屬性
阿新 • • 發佈:2019-01-10
當你匯入一個模組,Python解析器對模組位置的搜尋順序是:
1、當前目錄
2、如果不在當前目錄,Python則搜尋在shell變數PYTHONPATH下的每個目錄。
由sys模組的sys.path方法來規定
因為sys.path返回的資料型別是列表
1、列表可以修改、我們匯入的範圍也可以通過修改sys.path這個列表獲得暫時的修改。例如通過 sys.path.append()新增目錄,匯入額外目錄的模組。
2、列表是有序的,當搜尋的過程當中,在第一個路徑下搜尋到了,就停止搜尋。而且sys.path第一個路 徑是指令碼的當前路徑,所以禁止大家講自己的指令碼命名成模組的名稱。
因此需要注意的是:自己模組命名的時候不能和系統的模組名稱相同。
pyc臨時檔案
為了提高載入模組的速度,python直譯器會在__pycache__目錄中下快取每個模組編譯後的版本,之後,再次被匯入時,實際上匯入的是這個.pyc的臨時檔案。
把模組當做指令碼執行
我們可以通過模組的全域性變數__name__來檢視模組名:
當做指令碼執行:
name 的值 等於’main’
當做模組匯入:
__name__的值等於模組名
作用:用來控制.py檔案在不同的應用場景下執行不同的邏輯
if name == ‘main’:
建立model03.py檔案,其程式是:
name='haitao' print(__name__) #__name__是內建屬性 打印出來是 __main__ #__main__ if __name__ == '__main__': print('xxx') # xxx
模組當指令碼執行時,name = ‘main’
模組被匯入時,name 就是模組變數名稱,在被呼叫時,其
測試程式碼將不會執行。
import model03
print(model03.__name__)
執行結果:
model03
model03
內建屬性的兩個作用:
#1、根據__name__的值可以寫測試程式碼: # 根據__name__的值可以寫測試程式碼 # if __name__ == "__main__": if __name__ == '__main__': print('xxx') # 2、做測試入口 def func(): print('程式開始了') def func1(): print('程式結束了') if __name__ == '__main__': func() func1()
執行結果:
程式開始了
程式結束了