模块补充和软件开发目录规范

模块补充

循环导入

循环导入就是两个文件彼互相导入。循环导入的时候极有可能发现某个名字还没有被创建就使用的情况,引发报错导致程序终止。在实际编程中,尽量避免循环导入。
如果确实需要循环导入,那么需确保双方使用的名字都必须在导入前定义
方式1:先定义名字,再导入模块
方式2:将导入模块的句式写在函数体代码内

图片名称

判断文件类型

py文件可以被分为两种类型

  1. 执行文件
  2. 被导入文件

内置变量__name__

当__name__所在的文件是执行文件的时候,结果是__main__
当__name__所在的文件是被导入文件时候,结果是模块名

# 创建一个md001.py文件
x = 88888
if __name__ == '__main__':
    print('loaded md001')
else:
    print('from md001')
# 创建一个执行文件导入md001.py文件
import md001

if __name__ == '__main__':
    print(md001.x)
图片名称

模块的查找顺序

  1. 先从内存空间中查找
  2. 再去内置模块中查找
  3. 最后到sys.path查找
# 验证先从内存空间中查找
import md001
import time
time.sleep(10)  # 睡眠期间将md0011.py文件删除
print(md001.x)

# 验证从内置模块中查找
# 创建一个time.py文件
def func():
    print('this is self-defined time module')


func()
# 创建一个执行文件导入time.py文件
import time

print(time)
print(time.time())

# 验证到sys.path中查找
import sys
print(sys.path)  # 结果是一个列表,里面的元素是一个个路径
sys.path.insert(0, r'D:\PyCharm 2021\week4\day18\pkg')  # 主动添加sys.path路径
print(sys.path)
import md001

绝对导入和相对导入

绝对导入

# 创建一个md002.py文件
smile = '^^^o^^^'
if __name__ == 'qqq.www.eee.md002':
    print('from md002')
else:
    print('loaded md002')
# 创建一个执行文件导入md002.py文件
from qqq.www.eee import md002

print(md002.smile)

相对导入

# 创建一个md003.py文件
smile = '---o---'
if __name__ != '__main__':
    print('from md003')
else:
    print('loaded md003')
from . import md002

print(md002.smile)

from qqq.www.eee import md003
# 创建一个执行文件导入md003.py文件
print(md003.smile)

图片名称

什么是包?

包就是内部含有__init__.py的文件夹

__init__方法使用

# 在pkg文件夹(与执行文件路径一致)里创建一个md001.py文件
x = 88888
if __name__ == 'md001':
    print('from md001')
# 在__init__.py中添加代码
from . import md001
# 创建一个执行文件导入pkg(包)
import pkg
print(pkg.md001.x)

软件开发目录规范

一、bin文件夹

存放程序的启动文件,例如start.py

二、conf文件夹

存放程序的配置文件,例如settings.py

三、 core文件夹

存放程序的核心业务,例如src.py
就是最为重要的代码 能够实现具体需求

四、 lib文件夹

存放程序公共的功能,例如common.py

五、 db文件夹

存放程序的数据,例如userinfo.txt,admininfo.txt

六、 log文件夹

存放程序的日志记录,例如log.log

七、 readme文本文件

存放程序的说明、广告等额外的信息

八、 requirements.txt文本文件

存放程序需要使用的第三方模块及对应的版本

图片名称
posted @ 2022-03-25 20:29  一梦便是数千载  阅读(34)  评论(0编辑  收藏  举报