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/