模块的使用
01 模块的循环导入问题
解决方案一: 把循环导入的语句放到名字定义的后面
解决方案二: 将循环导入语句放到函数内(先定义确定名称空间)
02 区分python文件的两种用途
#当文件被执行时__name__=='__main__'
#当文件被导入时__name__=='模块名'
# if __name__ == '__main__': (输入main时可直接出现左边语句)
# f1()
03 模块的搜索路径
# 模块搜索路径的优先级
# 1. 内存中已经加载过的
# 2. 内置模块
# 3. sys.path # 第一个值是当前执行文件所在的文件夹
添加路径方式:1 sys.path.append(r'需要添加的模块路径') (sys.path本质是一个储存有路径的列表)
2 from dir1.dir2 import m2 (在执行文件同级下寻找dir1,再在dir1下寻找dir2,再在dir2下寻找m2导入)
注意:模块名绝对不能和内置模块或第三方模块同名
环境变量是以当前执行文件为准的
# 强调:所有被导入的模块参照环境变量sys.path都是以执行文件为准的
方式2中:在一个模块中导入另一个模块,也是以执行文件的环境变量(sys.path)为准的
04 绝对导入与相对导入
绝对导入: 以执行文件的sys.path为起始点开始导入,称之为绝对导入
优点: 执行文件与被导入的模块中都可以使用
缺点: 所有导入都是以sys.path为起始点,导入麻烦
相对导入: 参照当前所在文件的文件夹为起始开始查找,称之为相对导入
符号: .代表当前所在文件的文件加,..代表上一级文件夹,...代表上一级的上一级文件夹
优点: 导入更加简单
缺点: 只能在被导入的模块中使用,不能在执行文件中用
注意:执行文件中只能用绝对导入
05 软件开发的目录规范
ATM (程序存放的总文件,也是项目的名字,所有相关文件军存放在这里)
bin (程序开始文件存放地点,就是执行文件的所在地)
start.py (执行文件的文件名,可以有start.py2,和start.py同级)
conf (存放程序中相关参数的文件的地点,所有相关参数的文件都放在这里)
settings.py (存放参数的文件,但参数有很多种的时候,可以是多个)
core (主体核心程序的存放地点,最重要的部分)
src.py (主体核心程序,需要是可以有多个)
db (需要永久保存数据的地点)
userinfo.txt(存放用户信息的文件,也可以有存放商品信息的文件等多个文件)
lib (存放自定义常用模块的地点)
common.py (自定义常用的模块1,可以有多个2,3,4,....)
log (存放日志文件的地方)
transaction.log (日志文件,用于存放交易记录,可以是多个)
Readme(解释程序功能和每个文件作用的文件,方便用户的使用和查看)