python-模組入門二(模組迴圈匯入,區分python檔案的兩種用途,模組搜尋路徑,軟體開發的目錄規範)

我要學程式設計發表於2018-08-08

一、模組的迴圈匯入問題

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 #說明文件

 

目錄後繼會繼續補充!

 

焚膏油以繼晷,恆兀兀以窮年。


相關文章