今日总结

循环导入

# 循环导入就是两个文件之间彼此导入,在编码中尽量避免出现循环导入的问题,如果必须要用的话,那要提前定义好双方的名字。
# 使用循环导入的方法有两种
1.将导入模块的句式写在定义名字的下面
2.将导入模块写在函数体代码里面

判断文件类型

# py文件就两种,一种叫执行文件,一种叫被导入文件,判断是哪种类型的话可以使用内置变量双下name判断。当使用了双下name,结果是__main__的时候,那就是执行文件;如果使用了双下name,结果是文件名或者模块名的时候,那它就是被导入文件。
if __name__ == '__main__':可以用来区分被导入的代码和测试代码,如果当前文件是执行文件的话,才会执行的子代码块
 # 简写方式就是直接输入main之后按tap键就可以了,自带的

模块的查找顺序

# 查找顺序很像环境变量里面的绝对路径一样,一层一层中去查找
1.先从内存空间中找
2.再去内置模块中找
3.最后去sys.path中找
如果都找不到的话就会报错
# sys.path中虽然有很多路径,但是只需要重点关注第一个,因为第一个就是执行文件所在的路径,查找模块的时候只需要站在执行文件所在的路径查看就可以
# 路径如果不存在的话,有两种解决方法
1.主动添加sys.path路径
import sys
sys.path.append(r'所在路径')
import (模块)
print(模块.名字)

2.利用from...import...句式指名道姓的查找
from 文件夹 import 模块
print(模块.名字)
from 文件夹.文件名 import 模块
print(模块.名字)

绝对导入与相当导入

# 在导入模块的时候一切查找模块的句式都是以执行文件为准,无论导入的句式是在执行文件中还是在被导入文件中
# 绝对导入:永远按照执行文件所在的路径一层一层往下查找
# 相对导入:相对导入打破了必须参照执行文件的所在路径的要求,只需要考虑当前模块所在的路径,然后使用特殊符号去查找其它模块即可。相对导入只能在被导入文件中使用,不能在执行文件中使用
# .:表示当前路径
# ..:表示上一层路径
# ...:表示上上一层路径

# 包就是内部含有__init__.py的文件夹,由多个模块文件组合在一起的。
# 在pycharm中直接提供了创建包的选项,本质就是文件夹里面有一个__init__.py文件
# 在导入包的时候,索要名字其实是跟里面的__init__.py要
# 如果想要直接通过包的名字使用包里面的所有的模块,那么需要在__init__.py中提前导入(好处在于__init__可以提前准备好可以使用的名字)
# 也可以直接忽略__init__,使用绝对导入(好处在于不需要考虑包的存在,直接当成普通文件即可

软件开发目录规范

1.bin文件夹:存放程序的启动文件(start.py)
2.conf文件夹:存放程序的配置文件(seetring.py)
3.core文件夹:存放程序的核心业务,能够实现具体需求(src.py)
4.lib文件夹:存放程序公共的功能(common.py)
5.db文件夹:存放程序的数据(userinfo.txt)
6.log文件夹:存放程序的日志记录(log.log)
7.readme文本文件:存放程序的说明,广告等额外信息
8.requirement.txt文本文件:存放程序需要使用的第三方模块及对应的版本