模块的补充内容

循环导入问题

# 两个文件彼此导入
	循环导入的时候有可能出现某个名字还没有被创建就被使用的情况导致报错,所以,我们尽量避免循环导入这种情况出现
    如果确定需要循环导入,那么需要确保两个文件使用的名字都是提前定义好的
    方法一:将导入模块的句式写在定义名字的下方
    方法二:将导入模块的句式写在函数体代码内

判断文件类型

# py文件可以被分为两种类型
	1.执行文件
    2.被导入文件
# 内置变量__name__
	当__name__所在的文件是执行文件的时候结果是__main__
    当__name所在的文件是被导入文件的时候 结果是文件名
因此我们可以借__name__区分被导入的代码和测试代码
if __name__ == '__main__'
	当前文件时执行文件的时候才执行的子代码块
'''
上面这段代码由于使用频率很高,所以python给出了快捷写法
mian + tab
'''

模块的查找顺序

'''
1.先从内存空间中去寻找
2.去内置模块中寻找
3.去sys.path中查找(类似于环境变量)
如果在上面三个地方都没找到,就会报错
'''
# 1.验证是否先从内存空间中去查找
import md1
import time
time.sleep(20)  # 睡眠期间将md1文件删除
print(md1.name)
# 2.验证去内置模块中查找的优先级
先在文件中自己建一个time模块
import time
print(time.time())
'''因此在py文件时一定不要跟模块名冲突'''
# 3.验证sys.path
import sys
print(sys.path)  # 结果是一个列表,里面存放路径
'''当内存和内置空间中没有要查找的模块时,就会去sys.path中挨个的去查找,    只需要重点关注第一个就可以,第一个路径时执行文件所在路径,查找模块的时候时是站在执行文件的路径查看'''
# pycharm会主动将项目目录所在的路径添加到sys.path中

当所要添加的模块跟执行模块不在同一个文件目录下面时的解决方法
# 1.主动添加路径
import sys
sys.path.append()

# 2.利用from...import...句式指名道姓的导入模块
eg.执行文件 跟文件加a 在同一个文件目录下,导入a文件夹中b文件加中c文件夹中md模块中的name变量
from a.b.c.md import name

绝对导入和相对导入

1.导入模块的时候一切查找模块的句式都是以执行文件为准
	无论是导入句式是在执行文件还是在被导入文件
# 绝对导入
	永远按照执行文件所在的路径一层层往下查找
# 相对导入
	相当导入打破了必须参照执行文件的所在路径的需求,只要考虑当前模块所在路径然后使用特殊符号去查找其他模块即可
    from . import a
    相对导入只能在导入文件中使用,不能在执行文件中使用
    
    '''
    .  表示当前路径
    ..  表示上一层路径
    ../..  表示上上一次路径
    '''

# 从专业的较大解释
	包就是含有__init__.py的文件夹
# 从实际较大解释
	包就是多个模块的结合体(内部存放多个模块)
类似我们电脑中的文件夹,我们将硬盘中的信息进行分类,放到不同的文件夹里
# pycharm中直接提供了创建包的选项
本质就是 文件夹里面加了一个__int__.py文件

'''
在导入包的时候 索要名字其实是跟包里面的__init__.py要
	1.如果想直接通过包的名字使用包里面所有的模块 那么需要在__init__.py中提前导入
		好处在于__init__可以提前帮你准备好可以使用的名字
		
	2.也可以直接忽略__init__.py的存在使用绝对导入
		好处在于不需要考虑包的存在 直接当成普通文件夹即可
'''

编程思想的演变

1.小白阶段
	写代码就是在一个问价内不停的堆叠代码行数
2.函数阶段
	学会了将一些特点功能的代码封装到函数中,可供后续反复调用
3.模块阶段
	不单单是将代码封装成函数,还可以将相似的代码功能拆分到不同的py文件中,可读性提高便于管理
    '''这么演变的原因是为了根据方便快捷和高校的管理资源'''

软件开发目录规范

# 我们实际工作中编写的程序软件是由很多文件夹组成的
常见文件夹
1.bin文件夹
	存放程序的启动文件 start.py
2.conf文件夹
	存放程序的配置文件 settings.py
3.core文件夹
	存放程序的核心业务 src.py
    即能够实现具体需求的代码
4.lib文件夹
	存放程序公共的功能 common.py
5.db文件夹
	存放程序的数据 userinfo.txt
6.log文件夹
	存放程序的日志记录 log.log
7.readme文件
	存放程序的说明广告等额外信息
8.requirements.txt文本文件
	存放程序需要使用的第三方模块及对应的版本
posted @   名字只需六字  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示