模块与包
模块简介
什么是模块
python模块是一系列功能的结合体,一个py文件就是一个模块,导入模块可以引用模块中已经写好的功能;在需要的时候可以直接拿来套用,比如说,模块就是已经洗好待下锅的菜,剩下的工作就是什么时候用到了;直接下锅就行了,极大提高了开发效率!
将程序模块化会使整个程序结构更加清晰,维护起来更加方便。单独开发一个小的模块也会更加简单,可以被重复使用,即保证了代码的重要性,又增加了的可维护性。
模块的分类
1.内置的:python中自带的;可以直接调用
2.第三方的:就是别人写好的,需要下载使用
3.自定义的:就是自己写的
模块的存在形式
模块:就是我们自己写的py文件,一个py文件就是一个模块
模块的使用
比如说我要写一个登陆系统;刚好之前写过这个代码;就可以用模块导入方式,form 登陆的py文件 import 登陆的模块,导入到执行文件中;是不是一个句式就省去一打块代码
import句式
使用时需注意:
1.import 在使用阶段模块名py后缀不能加,比如说:import mk,如果写成import mk.py就是错误的
2.要区分开哪个是执行文件,哪一个是导入文件
3.在导入模块的时候,只有第一次会执行,其他的不会执行
import导入模块
import 模块名
整个模块的导入流程:
1.运行执行文件,产生执行文件的全局名称空间、
2.运行导入文件(lmp.py)
3.产生导入文件的全局名称空间,并且把导入文件中产生的名字都保存到导入文件的全局名称空间中
4.在执行文件中,产生一个lmp名字指向导入文件的全局名称
from...import...导入模块
from 模块名 import 模块内名字
模块导入流程:
1. 运行执行文件,产生执行文件的全局名称空间
2. 运行lmp.py文件
3. 产生导入文件的全局名称空间,把运行之后产生的名字都保存到导入文件的全局名称空间中
4. 在执行文件中,产生一个名字变量名指向导入文件中得值
导入文件的扩展用法
1.起别名:
import 模块名 as 别名
比如:import mddddddddddddddddddddddddddddddddddddddd as lmp此时lmp就是改过后的名字
form 模块名 import 模块内的变量名 as 别名
2.连续导入:
import time
import md
import os
import sys
import time, md, os, sys # 等价于上面4行代码
import 模块名1, 模块名2, 模块名3, 模块名4, 模块名5,
# 推荐还是分开写好一些
3.通用导入:
from lmp import * #星号可以接收所有导入模块里的变量名,弊端就是看不到具体的内容,使用过程中也不会有提示功能
判断文件的类型
在执行文件中使用__name__,返回结果是__main__
如果在导入文件中使用__name__,结果是模块名
文件之间可以相互导入,并不固定哪一个是执行文件,常规用法可以在代码的下方
if __name__ == '__main__':
print('当前是执行文件')
判断哪个是执行文件
循环导入
在一个包中,如果A的完全导入依赖于B的导入,但是B的完全导入又需要导入A,即两个模块之间存在相互导入,那么就会引发循环导入问题,这种现象是坚决不允许的,如果出现这个问题就说明程序设计的不合理
模块的查找顺序
1. 先从内存中查找
2. 再从内置模块中查找
3. 从环境变量中查找sys.path
注意以后的文件名命名坚决不能跟内置模块名重名
模块丢失的解决方案
1.把模块所在的路径添加到环境变量中 会打印出文件的所有路径,第一个路径就是所在的文件夹
是文件名是列表类型,那既然是列表类型就可以追加,可以appand()追加文件路径
2.from 文件名 import 对应的py文件名也可以调用
如何让导入模块不轻易报错
如上就是把导入模块的路径,追加到执行文件的目录中;让它能找到对应模块的路径,就不会出现报错飘红,找不到文件的情况
绝对导入和相对导入
绝对导入
始终以执行文件所在的环境变量sys.path为基准
相对导入
句点符(.) 代表的是当前路径,当文件中出现了相对导入的句式,该文件就不能当成执行文件运行了,只能被当成导入文件使用'
包
导包流程
1. 运行执行文件,产生执行文件的名称空间
2. 运行__init__.py文件, 把该文件中产生的名字保存在名称空间中
3. 在执行文件中,产生一个包名字b指向包的名称空间
导包就是在导__init__.py文件,可以直接得到包里面的模块,也可以通过绝对路径一个一个导模块,相比单个导模块直接导包会比较便捷
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY