1、程序中,低耦合,高內聚—是指模塊之間低耦合、模塊內部高內聚。這個軟件系統的進化過程是由程序員參與的過程,以追求軟件系統的可重用和易維護—也是追求消耗最小的能量。
2、各包模塊導入
a、同級目錄:
mycompany
├─ model1.py
└─ model2.py
若在程序model2.py中導入模塊model1.py,則可以直接使用 import model1 或 from model1 import xxx(from model1 import *);
b、調用子目錄下的模塊
mycompany
├─ web
│ ├─ abc.py
│ └─ xyz.py
├─ model1.py
└─ model2.py
若在程序model1.py中導入模塊abc.py,可以在web文件夾中建立空文件夾__init__.py文件。新目錄結構如下:
mycompany
├─ web
│ ├─ abc.py
│ |_ xyz.py
| |_ __init__.py
├─ model1.py
└─ model2.py
使用from web.abc import xxx 或者 import web.abc (輸出需要print(web.abc.xxx(參數)))
c、調用上級目錄下的文件
mycompany
├─ web
│ ├─ abc.py
│ |_ xyz.py
| |_ __init__.py
|
|——lib
| |_ test1.py
|
├─ model1.py
└─ model2.py
若程序test1.py中導入abc.py 和 model1.py,做法是先跳到mycompany目錄下面,直接可以調用model1.py,然後在web下建立一個空文件__init__.py,這個文件我們上一步已經建過了,建好以後就可以像第2步調用子目錄下模塊一樣,通過import web.abc 進行調用。具體代碼如下:
import os
import sys
'''
print(__file__)#獲取當前程序路徑,注意:這裏打印出來的路徑爲相對路徑
#動態獲取絕對路徑
print(os.path.abspath(__file__)) #這纔是當前程序絕對路徑
print(os.path.dirname(os.path.abspath(__file__))) #當前程序上一級目錄,其中dirname返回目錄名,不要文件名
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))#當前程序上上一級目錄
'''
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #當前程序上上一級目錄,這裏爲mycompany
sys.path.append(BASE_DIR) #添加環境變量
import model1
import web.abc
注意:
Python編程:pycharm同級目錄導入模塊報錯問題
雖然報錯但是可以正常運行,解決方法可以如下
在當前目錄右鍵make_directory as-->Sources Root
python項目目錄
參考:
https://www.cnblogs.com/bigberg/p/6423164.html
https://jeffknupp.com/blog/2013/08/16/open-sourcing-a-python-project-the-right-way/