-
模块
-
程序设计目录规范
一、模块
1、什么叫模块
模块就是一系列功能的结合体,将一系列功能放在一起。
模块有三种来源,首先由内置的模块,也就是python解释器自带的,其次就是第三方的模块,别人提前写好的,使用时直接拿来调用即可,最后一种是自定义的,也就是自己写的。
2、模块的四种表现形式
模块可以是python编写的py文件,意味着每一个py文件可以称之为一个模块;模块也可以是已经编译为共享库或DLL的C或C++扩展;模块也可以是把一系列模块组织到一起的文件夹,有init.py文件的文件夹叫做包(一系列py文件的结合体);模块也可以是使用C编写并连接到pytho解释器的内置模块。
3、模块的作用
使用模块主要有两点好处:
1、用别人写好的模块(内置或者第三方的)可以极大的提高开发效率
2、将写的程序的文件模块化,可以便于区分写的程序具有哪些功能,方便程序的调用以及后期的维护与更新
3、模块的导入 模块在使用前,需要先执行导入模块的操作,模块的导入方法主要有如下两种。
1、import导入模块
# run.py import md
#md.py print('from the md1.py') money = 1000 def read1(): print('md',money) def read2(): print('md模块') read1() def change(): global money money = 0
右键运行run.py文件首先会创建一个run.py的名称空间。
首次导入模块(md1.py)。
1.执行md.py文件。
2.运行md.py文件中的代码将产生的名字与值存放到md.py名称空间中。
3.在执行文件中产生一个指向名称空间的名字(md)。
多次导入不会再执行模块文件,会沿用第一次导入的成果。
2、from...import...导入模块(与import类似)
再导入模块前一定要先区分哪个是执行文件,哪个是被导入文件,分清导入模块的路径
模块的导入路径有绝对路径导入和相对路径导入
1、绝对导入必须依据执行文件所在的文件夹的路径为准,绝对路径导入无论在执行文件中还是被导入文件中都适用;
2、相对导入可以用.代表当前路径,..代表上一级路径,...代表上上一级路径。相对导入不能在执行文件中使用,相对导入只能在被导入的模块中使用,使用相对导入不需要考虑执行文件在哪,只需要知道模块与模块之间的路径关系。
4、模块的循环导入
模块的循环导入是指模块A导入模块B,模块B也导入模块A。当A模块导入B模块的某个参数或函数时,当该模块或参数定义在模块B导入模块A之后,此时的模块导入会报错,会出现没有定义变量名或函数,名的错误。
循环导入模块在设计程序的时候时不被提倡的,如果出现循环导入模块,说明设计的程序不合理,即使可以通过其它方法解决。应该在设计程序阶段避免出现在这种问题。
循环导入模块的解决方法:
1、将循环导入的句式写在文件最下方
2、在函数内导入模块
5、__name__的用法
在一个文件中,直接调用name时,若文件被当作执行文件执行的时候,name打印结果时main;当玩文件被当作模块导入的时候name打印的结果时模块名,没有.py的后缀。
6、模块的查找顺序
模块的查找顺序分为三步:
1、先从内存中找
2、然后从内存中找
3、最后在sys.path中找(可以理解为在环境变量中查找)
如果三步都没用查找到,则会报错,该模块名不存在
二、程序设计规范
文件目录规范入下所示:
项目名
bin文件夹
start.py(项目启动文件)
conf文件夹
settings.py(项目配置文件)
core文件夹
src.py(项目核心逻辑)
db文件夹 (存放数据库相关文件)
lib文件夹
common.py(项目所用到的公共的功能)
log文件夹
log.log(存放项目的日志文件)
readme.txt(文本文件,项目简介)