循环导入问题
循环导入的时候有可能出现某个名字还没有被创建就被使用的情况导致报错,所以,我们尽量避免循环导入这种情况出现
如果确定需要循环导入,那么需要确保两个文件使用的名字都是提前定义好的
方法一:将导入模块的句式写在定义名字的下方
方法二:将导入模块的句式写在函数体代码内
判断文件类型
1.执行文件
2.被导入文件
当__name__所在的文件是执行文件的时候结果是__main__
当__name所在的文件是被导入文件的时候 结果是文件名
因此我们可以借__name__区分被导入的代码和测试代码
if __name__ == '__main__'
当前文件时执行文件的时候才执行的子代码块
'''
上面这段代码由于使用频率很高,所以python给出了快捷写法
mian + tab
'''
模块的查找顺序
'''
1.先从内存空间中去寻找
2.去内置模块中寻找
3.去sys.path中查找(类似于环境变量)
如果在上面三个地方都没找到,就会报错
'''
import md1
import time
time.sleep(20)
print(md1.name)
先在文件中自己建一个time模块
import time
print(time.time())
'''因此在py文件时一定不要跟模块名冲突'''
import sys
print(sys.path)
'''当内存和内置空间中没有要查找的模块时,就会去sys.path中挨个的去查找, 只需要重点关注第一个就可以,第一个路径时执行文件所在路径,查找模块的时候时是站在执行文件的路径查看'''
当所要添加的模块跟执行模块不在同一个文件目录下面时的解决方法
import sys
sys.path.append()
eg.执行文件 跟文件加a 在同一个文件目录下,导入a文件夹中b文件加中c文件夹中md模块中的name变量
from a.b.c.md import name
绝对导入和相对导入
1.导入模块的时候一切查找模块的句式都是以执行文件为准
无论是导入句式是在执行文件还是在被导入文件
永远按照执行文件所在的路径一层层往下查找
相当导入打破了必须参照执行文件的所在路径的需求,只要考虑当前模块所在路径然后使用特殊符号去查找其他模块即可
from . import a
相对导入只能在导入文件中使用,不能在执行文件中使用
'''
. 表示当前路径
.. 表示上一层路径
../.. 表示上上一次路径
'''
包
包就是含有__init__.py的文件夹
包就是多个模块的结合体(内部存放多个模块)
类似我们电脑中的文件夹,我们将硬盘中的信息进行分类,放到不同的文件夹里
本质就是 文件夹里面加了一个__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文本文件
存放程序需要使用的第三方模块及对应的版本
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人