今日所得
模块
import
from...import...
循环导入
相对导入
绝对导入
软件开发目录规范
模块
模块:是一系列功能的集合体
模块的三种来源:1.内置模块(Python解释器自带的模块)
2.第三方模块(别人写的)
3.自定义模块(自己写的)
模块的四种表现形式
1.使用Python编写的py文件(py文件也可以称之为模块)
2.已被编译为共享库或DLL的C或C++扩展
3.把一系列模块组织到一起的文件夹(文件夹下有一个__init__.py文件,该文件夹称之为包)包:一系列py文件的结合体
4.使用C编写并连接到Python解释器的内置模块
Python解释器启动时加载的模块缓存 > 同级目录 > sys.path(环境变量)
使用别人编译好的模块,可以极大的提高开发效率
使用自己编译的模块,当程序比较庞大的时候,你的项目不可能只在一个py文件中,当多个文件需要使用相同的方法时,可以将该方法放到一个公用的py文件中,有文件需要使用时可以直接调用
import
这是Python在调包时用到的关键字
import time
name = 'chen'
start = time.time()
time.sleep(2)
print(name)
end = time.time()
print(end - start)
"""
右键运行执行文件,会首先创建一个执行文件的名称空间
让后首次导入time模块
1.执行time.py文件
2.运行time.py的代码将产生的值和名字放入time的名称空间中
3.执行文件会得到一个指向time名称空间的名字(time)
多次导入不会再执行模块文件,会沿用第一次导入的结果
"""
from...import...
在执行文件中运行
首先创建执行文件的名称空间
首次导入模块
1.运行模块
2.执行模块将产生的名字和值放入模块的名称空间
3.直接拿到import指向的模块中某个值的名字
缺点
1.访问模块中的名字不需要加模块名前缀
2.在访问模块中的名字可能会与当前执行文件中的名字起冲突
循环导入
在运行执行文件时,导入一个模块,导入的模块中又导入了其他模块,来来回回的互相导入
如果出现了循环导入问题,就说明是你的程序设计不合理,循环导入问题应该在程序的设计阶段就应该避免
解决循环导入问题的方式
1.将循环导入的句式写在文件最下方
2.在函数内导入模块
__name__的用法
当该文件被当做执行文件时__name__打印的结果是__main__
当文件被当做模块导入的时候__name__打印的结果是模块名(没有后缀)
模块的查找顺序
1.先从内存中找
2.再去内置中找
3.最后去sys.path中找(环境变量)
要分清楚谁是执行文件,谁是被导入文件
print(sys.path)是一个大列表,第一个路径就是执行文件所在的路径
模块的绝对导入
绝对导入必须依据执行文件所在的文件夹路径为准
1.绝对导入无论是在执行文件中还是被导入文件中都合适
相对导入
.代表的当前路径
..代表的上一级路径
...代表的上上一级路径
相对导入不能再执行文件中使用,使用相对导入就不需要考虑执行文件是谁,只需要知道模块与模块之间路径关系
"""
项目名
bin文件夹
start.py项目启动文件
conf文件夹
setting.py项目配置文件
core文件夹
src.py项目核心逻辑文件
db文件夹
数据相关
lib文件夹
common.py项目所有用到的公共的功能
log文件夹
log.log项目的日志文件
readme文本文件 介绍项目
"""
bin文件夹
start.py文件
import sys
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# __file__是当前文件的位置
sys.path.append(BASE_DIR)
"""
pycharm会自动将你新建的最顶层的目录自动添加到环境变量中
上面这两句话 不是针对你的 是针对下载你这个软件的用户
"""
from core import src
if __name__ == '__main__':
src.run()