模块的基本使用

一.循环导入

两个py文件彼此导入彼此
# 循环导入的时候极有可能出现某个名字还没有被创建就使用的情况导致报错
"""尽量避免这种循环发生"""
如果确实需要循环导入 那么需要确保双方使用的名字都是'提前定义好的'
如果避免不了 只能将错就错
方式1.将导入模块的句式写在定义名字的下面
方式2.将导入模块的句式写在函数体代码内

二.判断文件类型

py文件分为两种:1.执行文件,2.被导入文件
# 有一个内置变量__name__
# 当__name__所在的文件是执行文件的时候 结果是__main__
# 当__name__所在的文件位置是被导入文件时候 结果是文件名(模块名)
可以借助于__name__区分被导入的代码和测试代码
if __name__ == '__main__':
当前文件是执行文件的时候才会执行的子代码块
"""很多启动脚本中经常用到所已直接输入main+tab键即可"""

三.模块的查找循序

1.先从内存空间内查找
2.在从内置模块中查找
3.最后去sys.path查找(类似于环境变量,公共仓库)
如果以上都找不到那么直接报错!

3.1验证先内存空间中查找

import md2  # 调用自定以模块
import time  # 调用内置时间模块
time.sleep(10)  # 设置时间3秒
print(md2.username)  # 启动后删除md2文件
# 结果是md2文件中的 'jason'
# 结论:启动后删除需要找的东西已经在内存空间中了

3.2验证内置模块

# import time
# print(time)
# print(time.time())
"""强调:在创建py文件时候一定不要跟模块名(内置、第三方)冲突!!!"""

3.3验证sys.path

# import sys
# print(sys.path)  # 结果是一个列表 里面存放了很多路径
当内存中和内置中都没有要查找的模块时 就会去下面的路径中挨个查找
['D:\\pythonProject', 'D:\\pythonProject', 'D:\\PyCharm 2020.3.3\\plugins\\python\\helpers\\pycharm_display', ....等等]
sys.part很多路径只需要关注第一个文件路径就可以
解决方案:
# 方式1添加:
import sys  # 路径模块
sys.path.append(D:\pythonProject/md1) # 添加绝对路径md1
import md2  # 找到md1里的py文件 md2
print(md2.username) # 执行md2里的代码
# 方式2利用from..import..指名道姓查找
for md1 import md2 # 从文件夹md1中导入md2模块
可查找多层for md1.md0.md import md2

四.绝对导入和相对导入

"""在导入模块的时候一切查找模块的句式都是以执行文件为准
无论导入的句式是在执行文件中还是在被导入文件中"""

4.1绝对导入

永远按照执行文件所在的路径一层层往下查找(无脑查找即可)

4.2相对导入

相当导入打破了必须参照执行文件的所在路径的要求 只需要考虑当前模块所在的路径然后使用特殊符号.去查找其他模块即可
# from . import md2
"""相对导入只能在被导入文件中使用 不能在执行文件中使用"""
一个(.)表示当前路径
二个(..)表示上一层路径
四个(../..)表示上上一层路径 '/'是因为解释器不认识四个(.)所以要分开
# 五.包
```python
专业角度说:
包内部含有一个__init__.py的文件夹
实际角度说:
包就是一堆py文件的集合体

5.1__init__文件夹的含义

在导入包的时候 索要名字其实是跟包里面的__init__.py要
1.如果想直接通过包的名字使用包里面所有的模块 那么需要在__init__.py中提前导入
上述方式的好处在于__init__可以提前帮你准备好可以使用的名字		
2.也可以直接忽略__init__的存在使用绝对导入即可
上述方式的好处在于不需要考虑包的存在 直接当成普通文件夹即可
"""__init__就是管事的.python2中必须出现 python3中就可以架空不用"""

六(重点)

"""我们实际工作中编写的程序软件都是有很多文件夹和文件组成的"""
这些文件夹和文件其实都有各自存在的意义和主要功能

1.bin文件夹:存放程序启动文件  start.py
2.conf文件夹:存放程序配置文件 settings.py
3.core文件夹:存放核心业务     sec.py
4.lib文件夹:存放公共功能      common.py
5.db文件夹:存放程序数据       userinof.txt
6.log文件夹:存放程序日记录     log.log
7.readme文本文件:存放程序说明,广告额外信息  
                              readme.txt
8.requinrements文本文件:存放程序需要的第三方模块及对应的版本
                              requirements.txt
posted @ 2022-03-25 16:28  笑舞狂歌  阅读(36)  评论(0编辑  收藏  举报