python-模組入門二(模組迴圈匯入,區分python檔案的兩種用途,模組搜尋路徑,軟體開發的目錄規範)
一、模組的迴圈匯入問題
run.py
# import m1 # 第一次匯入
m1.py
# 錯誤示範 ``` print(`正在匯入m1`) from m2 import y #第一次匯入m2
x=`m1` ```
m2.py
# 錯誤示範 ``` print(`正在匯入m2`) from m1 import x y=`m2` ```
解決方案:
一:把迴圈匯入的語句放到名字定義的後面
# m1.py
# y=`m2` # from m1 import x
# m2.py # print(`正在匯入m2`) # # y=`m2` # from m1 import x
二:將迴圈匯入的語句放到函式內
# m1.py print(`正在匯入m1`) def f1(): from m2 import y,f2 #第一次匯入m2 print(`m1.f1---->y: `,y) f2() x=`m1`
# m2.py
def f2(): from m1 import x print(`m2.f2--->x: `,x) y=`m2`
二、區分python檔案的兩種用途
當檔案被執行時__name__==`__main__`
當檔案被匯入時__name__==`模組名`
if __name__ == `__main__`: f1() f2()
三、模組的搜尋路徑
模組搜尋路徑的優先順序:1.記憶體中已經載入過的,2.內建模組,3.sys.path第一個值是當前執行檔案所在的資料夾
環境變數是以當前執行檔案為準的.
注: 所有被匯入的模組參照環境變數sys.path都是以執行檔案為準的.被匯入的模組再去匯入其它模組,也是參照sys.path
四、絕對匯入與相對匯入
絕對匯入:以執行檔案的sys.path為起始位置開始匯入,稱之為絕對匯入
優點:執行檔案與被匯入的模組中都可以用
缺點:所有匯入都是以sys.path為起始點,匯入麻煩
相對匯入:
符號:一個”.”代表當前所在資料夾,”..”代表上一級資料夾,”…”代表上一級的上一級資料夾
優點:匯入更加簡單
缺點:只能在匯入包中的模組時才能使用,不能在執行檔案中使用
注意: 執行檔案中只能用絕對匯入
五、軟體開發的目錄規範
規範化的目錄結構能更好的控制程式,讓程式具有更高的可讀性
1.可讀性高 2.可維護性高
通常一個專案都會有的目錄如下:
專案名/
| — bin/ #程式啟動指令碼/程式入口
| | — start.py
|
| — conf/ #配置檔案
| | –settings.py
| — core/ #業務邏輯
| | –src.py
| — db/
| | –資料庫檔案
| — lib/ #第三方庫
| | –common.py
| — log/ #日誌
| | –transaction.log
README #說明文件
目錄後繼會繼續補充!
焚膏油以繼晷,恆兀兀以窮年。
相關文章
- Python入門(二十六):檔案模組(os模組與shutil模組)Python
- python中如何新增模組匯入路徑?Python
- python大型專案開發規範_學習Python模組匯入機制與大型專案的規範Python
- Python 模組匯入方式Python
- 【python3】匯入zip 檔案裡的模組Python
- python之匯入模組的方法Python
- Python-模組Python
- Python種匯入模組的三種方式總結Python
- Python入門—time模組Python
- 前端模組化之迴圈載入前端
- python–模組之os操作檔案模組Python
- python如何匯入自定義模組Python
- 模組匯入小結
- py模組匯入示例
- TypeScript入門-模組TypeScript
- 「Python實用秘技12」像匯入模組一樣匯入ipynb檔案Python
- Python:檢視已安裝模組 和 檢視可匯入模組Python
- Python模組查詢路徑Python
- ES模組化的匯入和匯出
- Python中匯入模組中的物件常見的三種方式!Python物件
- SAP PM 入門系列14 – PM模組與其它模組的整合
- django實現分頁的模組(匯入即可用)Django
- Python 模組的載入順序Python
- CommonJS和ES6模組迴圈載入處理的區別JS
- Python模組、第三方模組安裝、模組匯入教程Python
- python 模組:itsdangerous 模組Python
- Python模組:time模組Python
- 前端模組化規範前端
- JS模組化規範JS
- JavaScript模組化規範JavaScript
- es6模組化的匯入匯出
- 如何動態匯入ECMAScript模組
- go 語言模組匯入importGoImport
- 搜尋模組功能分析
- swoole 模組的載入
- Django之模組的繼承和匯入Django繼承
- Angular入門到精通系列教程(11)- 模組(NgModule),延遲載入模組Angular
- Tensorflow的資料輸入模組tf.data模組