模块:
模块就是一系列功能的结合体
模块的三种来源:
1、内置的(Python解释器自带的)
2、第三方的(别人写的)
3、自定义的(自己写的)
模块的四种表现形式
1、使用Python编写的.py文件(也就意味着py文件也可以称之为模块)
2、已被编写为共享库或DLL的C或者C++扩展
3、把一系列模块组织到一起的文件夹(文件下有一个init.py文件,该文件夹称之为包) 4、使用c语言编写并连接到python解释器的内置模块
为什么要用模块
1、可以用别人写好的模块(第三方的,内置的),极大的提高了开发效率
2、可以使用自己写的模块()当项目比较庞大的时候,你的项目不可能只放在一个py文件中,当多个文件中都需要使用相同的方法时,可以将该公共的方法写到一个py文件中,其他文件可以以模块的形式导过去直接调用。
如何使用模块
一定要区分哪个是执行文件,哪个是被导入文件
·import导入模块
使用import导入模块 访问模块名称空间的名字统一句式
模块名.名字
特点:
1、指名道姓的访问模块中的名字 永远不会与执行文件中的名字冲突
2、你如果想访问模块中名字 必需用模块名.名字的方式
首次导入模块,执行时三个步骤
右键运行执行文件,首先会创建一个执行文件的名称空间
执行被导入文件
运行被导入文件中的代码 将产生的名字与值放在被导入文件的名称空间中
在执行文件中产生一个指向名称空间的名字
多次导入不会再执行模块文件,会沿用第一次导入的成果
from...import...导入模块
from...import...句式的缺点
访问模块中的名字不需要加模块名前缀 在访问模块中的名字可能会与当前执行文件中的名字
循环导入问题和解决思路
异常原因
Python中模块被导入一次之后,就不会重新导入,只会在第一次导入时执行模块内代码
我们应该尽量避免出现循环导入,如果出现多个模块都需要共享的数据,可以将
name用法
当文件被当做执行文件执行的时候name打印的结果是main
当文件被当做模块导入的时候,name打印的结果是模块名
if__name__=='main' 的快捷写法 main直接tab键即可
模块的查找顺序
1、先从内存中找 2、内置中找 3、sys.path中找(环境变量)
模块的绝对导入和相对导入
绝对导入
绝对导入必须依据执行文件所在的文件夹路径为准
绝对导入无论在执行文件中还是在被导入文件都适用
相对导入
. 代表的当前路径
.. 代表着上一级路径
... 代表着是上上一级路径
相对导入只能在被导入模块中使用,不能再执行文件中使用。
软件开发目录规范
项目名
bin文件夹
start.py项目启动文件
conf文件
settings.py项目配置文件
core文件夹
src.py项目核心逻辑文件
db文件夹 数据相关
lib文件夹 common.py项目所用到的公共的功能
log文件夹 log.log项目的日志文件
readme文本文件 介绍项目
start.py文件代码
import sys import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) sys.path.append(BASE_DIR)