python模块
模块简介
1.什么是模块
模块就是一系列功能的结合体。
2.为什么要用模块
为了能提高开发的效率。
3.模块的三种来源
1.内置模块,也就是python解释器自带的能直接导入使用的。
2.第三方模块,也就是别人发表在网上的,能下载使用的。
3.自定义模块,也就是自己写的。
4.模块的四种表现形式
1.使用python编写的代码,也就是.py文件。
2.已被编译为共享库或DLL的C或C++扩展。
3.包好一组模块的包(文件夹)。包就是多个模块的集合,通常会含有一个__init__.py文件。
4.使用C编写并链接到python解释器的内置模块。
在学习完python模块之后,遇到复杂的功能设计可以去找找有没有适合的模块可调用。
import句式
import的作用是导入py文件模块,具体的句式如下:
import 文件名
需要注意的是,只需要文件名而不需要后缀。并且就算多次导入文件,也只会执行一次。
导入模块时:
1.会先运行导入 文件产生该文件的全局名称空间。
2.运行模块文件。
3.产生模块文件的全局名称空间。
4.在导入文件的名称空间产生一个和模块文件相同的名字指向模块文件的全局名称空间。
导入模块后:
通过模块名加点的方式就可以使用到模块中所有的名字,并且可以避免冲突。
from...import...句式
from...import...句式的作用同样是导入py文件模块,具体的句式如下:
from 文件名 import 单个或多个变量名或函数名
需要注意的是,只需要文件名而不需要后缀。并且就算多次导入文件,也只会执行一次。
导入模块时:
1.会先运行导入 文件产生该文件的全局名称空间。
2.执行模块文件产生模块文件的全局名称空间。
3.将模块中执行后产生的名字全部存在模块名称空间中。
4.在执行文件有模块名称空间中的名字指向的就是模块名称空间中该名字指向的值。
导入模块后:
在使用的时候直接写名字即可,但是当当前的名称空间有相同的名字时就会产生冲突,会使用当前名称空间的名字。
导入模块扩展用法
1.起别名
既可以给模块起别名,也可以给模块中的某个名字起别名。
2.连续导入
可以连续导入多个模块,推荐当多个模块功能相似或属于用一个系列时使用。
格式为:
import 模块名1,模块名2
除此外还可以连续导入多个名字。
格式为:
from 模块名1 import 名字1,名字2,名字3
3.通用导入
使用“*”号可以将文件中所有的名字全部导入。
在被导入的模块文件中可以使用__all__来指定被导入使用的名字。
判断文件类型
使用__name__判断py文件是作为模块文件还是执行文件。
当在模块文件中调用__name__时输出的是模块文件的名字。
当在执行文件中调用__name__时输出的是__main__
循环导入
循环导入指的是在模块导入的过程中,变量名没有定义就又导入了其他的模块,然后另一个模块又调用了模块中的变量名导致的异常。
解决方法
1.调换顺序
将彼此的导入句式放在最后
2.函数形式
将导入的句式放入函数体代码,等所有名字都加载完毕后再调用
模块的导入顺序
顺序
1.先去内存中找。
2.再去内置模块中找。
3.最后去sys.path系统路径中查找(自定义模块)。
都找不到则会报错。
值得一提的是,由于上述的顺序,在命名py文件时要尽量不与内置模块冲突。
找不到模块的解决方案
1.自己手动将模块所在的路径添加到sys.path中
import sys sys.path.append() # 文件路径
2.使用from...import...句式
绝对路径和相对路径
在程序中涉及多个文件导入模块的情况,一律按照执行文件的路径为准。
绝对导入
始终按照执行文件所在的sye.path查找模块。
相对导入
使用句点符:
‘.’表示当前文件路径。
‘..’表示上一层文件路径。
相对导入能打破始终以执行文件为准的原则,只考虑两个文件之间的位置。
需要注意的是相对导入只能用在模块文件中,不能用在执行文件中。
软件开发目录
目录规范并无固定的要求,只要清晰可读即可
bin文件夹
存放一系列启动文件(当启动文件很少或只有一个时可以直接不要文件夹放根目录)。
start.py
conf文件夹
存放一系列配置文件。
settings.py(一般情况下该文件夹内的变量名都是大写表示不可变量)
lib文件夹
存放公共的功能。
common.py
db文件夹
存放数据相关的文件。
userinfo.py
log文件夹
存放 日志记录文件
log.txt
core文件夹
存放项目核心代码文件
src.py
readme文件
存放说明相关信息(类似说明书)。
requirements.txt
存放项目所需的第三方模块及版本号。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通