''''''
'''
模块:一系列功能的结合体
三个来源: 自定义 内置 第三方
四种表现形式: py文件 一些列py文件的结合体(包) c编写连接到解释器的内置模块 编译好的共享库
用模块的原因: 提高开发效率,重复调用的方法写成模块,直接调用
用模块注意: 分清楚 执行文件 和 被导入文件
注意py文件名不应该与模块名(内置的,第三方)冲突
# import md1 # 导入模块的语法 导入多个模块,需要分开每个各写一行 导入模块写在文件开头
当模块名字比较复杂的情况下 可以给该模块名取别名 import 模块文件名 as 别名
多次导入不会重复执行,只要有名称空间就延用现有的
运行该执行文件: 创建一个该执行文件的局部名称空间
执行模块文件
将模块中执行的代码产生的名字放到模块空间
执行文件空间产生一个指向模块的名字
利用from...import...句式
缺点:
1.访问模块中的名字不需要加模块名前缀
2.在访问模块中的名字可能会与当前执行文件中的名字冲突
# 访问模块中的名字指向的值
# print(md.money) # 使用import导入模块 访问模块名称空间中的名字统一句势:模块名.名字 md.money 函数名也一样
执行文件中可以有相同的名字,但是在引用模块时是指名道姓
1.只要你能拿到函数名 无论在哪都可以通过函数加括号来调用这个函数(会回到函数定义阶段 依次执行代码)
2.函数在定义阶段 名字查找就已经固定死了 不会因为调用位置的变化而改变
__all__可以指定当前所在py文件被当做模块导入的时候,可以限制导入者能够拿到的名字个数
在当前模块文件中写 __all__ = ['名字1','名字2','名字3']
__all__ = ['money','read1','read2'] 一个列表
在模块中导入别的模块,别的模块会引用本模块后面代码还没有定义的变量而报错
如果出现循环导入问题 那么一定是你的程序设计的不合理,循环导入问题应该在程序设计阶段就应该避免
解决循环导入问题的方式
1.方式1: 将循环导入的句式写在文件最下方(),防止在导入别的模块,别的模块会引用本模块后面代码还没有定义的变量而报错
2.方式2: 定义的函数内导入模块,定义函数只检查语法不执行,函数中引用别的模块也不会立即执行,
会在程序继续跑完本模块,调用到这个函数,才会调用别的模块,
别的模块如果需要引用本模块,本模块的所有变量都已经定义了,不会报错
python为我们内置了全局变量__name__,
当文件被当做脚本执行时:__name__ 等于'__main__' 如果本文件是执行文件 __name__ 等于'__main__ 则可以执行函数
当文件被当做模块导入时:__name__等于模块名 如果本文件是模块文件 __name__等于模块文件名 只提供调用,不执行函数
#作用:用来控制.py文件在不同的应用场景下执行不同的逻辑
if __name__ == '__main__': index1()
这个意思是 如果本文件是执行文件,则运行函数,否则就是模块文件不运行函数,只提供调用
模块的查找顺序
1.先从内存中找
2.内置中找
3.sys.path中找(环境变量):
import sys
print(sys.path)
print(sys.path): 是一个大列表,里面放了一对文件路径,第一个路径永远是当前执行文件所在的文件夹
sys.path.append(r'D:\Python项目\day14\dir1') 给环境变量添加默认路径 这是个绝对路径
一定要分清楚谁是执行文件谁是被导入文件(******)
绝对导入必须依据执行文件所在的文件夹路径为准,即绝对路径
1.绝对导入无论在执行文件中还是被导入文件都适用
相对导入
.代表的当前路径
..代表的上一级路径
...代表的是上上一级路径
注意:
相对导入不能再执行文件中使用,只能在被导入的模块中使用,使用相对导入 就不需要考虑
执行文件到底是谁,相对路径是相对当前模和被应用模块之间的相对路径,只需要知道模块与模块之间路径关系
# 软件开发目录规范
# bin 目录下启动文件start.py的内容
import sys
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)
"""
# import os
# print(os.path.dirname(__file__))
#这个结果打印的是 sys.path(print(sys.path)) 中第一个目录,即当前目录的绝对路径,由os模块提供,用于拼接路径
# 1.将core文件路径添加到system path中 ...太low
# 2.将ATM文件夹添加到system path中
os.path.dirname(os.path.dirname(__file__)) 这个嵌套的意思就是当前执行文件目录的父目录,这个路径用于给下载软件的客户使用
pycharm会自动将你新建的最顶层的目录自动添加到环境变量中
上面这两句话 不是针对你的 是针对下载你这个软件的用户
"""
from core import src
# 在启动文件 导入核心代码目录 的 模块文件名 因为是执行文件的父目录了,即bin的父目录可以找到core目录
if __name__ == '__main__': # 如果该文件是执行文件,则执行导入模块中的run()函数
src.run()
软件开发目录规范
bin 目录
start.py 启动文件
conf 目录
settings.py 配置文件
core 目录
src.py 核心逻辑功能,核心代码文件
db 目录
数据库
lib 目录
common.py 公共模块文件
log 目录
log.log 日志文件
Readme 解释程序功能,说明文件
'''
模块的概念和应用 软件开发目录规范
猜你喜欢
转载自www.cnblogs.com/xiaozhenpy/p/11220589.html
今日推荐
周排行