




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第详解python关于多级包之间的引用问题包:在一个目录下存在__init__.py,那么该目录就是一个包。
模块:一个.py文件就是一个模块。
我们可以通过from包import模块来引入python文件,也可以使用from包.模块import模块中的函数或类。
具体看一下例子。
假设我们现在有以下的目录:
我们想在main.py中使用package_a和package_b里面额模块,可以这么使用:
frompackage_aimporttmp2
frompackage_bimporttmp4
tmp2.test_aTmp2()
tmp4.test_bTmp4()
test_aTmp2()和test_bTmp4()是tmp2.py和tmp4.py里面的函数。
这里是package_a包中tmp2模块下的test_aTmp2函数
这里是package_b包中tmp4模块下的test_bTmp4函数
假设我们想在main.py中使用a_utils包下的aUtils模块和b_utils包下的bUtils模块,我们可以这样:
frompackage_aimporttmp2
frompackage_bimporttmp4
frompackage_b.b_utils.bUtilsimporttest_bUtils
frompackage_a.a_utilsimportaUtils
tmp2.test_aTmp2()
tmp4.test_bTmp4()
aUtils.test_aUtils()
test_bUtils()
注意这里的两种用法,
一种是我们直接通过:from包.包.模块import函数
另一种是from包.包import模块,并通过模块.函数来使用相关的函数。
这里是package_a包中tmp2模块下的test_aTmp2函数
这里是package_b包中tmp4模块下的test_bTmp4函数
这里是package_a包中a_uitls包中的aUtils模块下的test_aUitls函数
这里是package_b包中b_uitls包中的bUtils模块下的test_buitls函数
下一个,假设我们想在tmp4.py使用tmp3.py中的函数,因为在同一个包下,我们自然的是这么使用:
fromtmp3importtest_bTmp3
test_bTmps3()
deftest_bTmp4():
print('这里是package_b包中tmp4模块下的test_bTmp4函数')
我们在tmp4.py中继续使用b_uitls包下的bUtils.py。
fromtmp3importtest_bTmp3
fromb_utils.bUtilsimporttest_bUtils
deftest_bTmp4():
print('这里是package_b包中tmp4模块下的test_bTmp4函数')
#test_bUtils()
test_bTmp3()
test_bUtils()
这里是package_b包中tmp3模块下的test_bTmp3函数
这里是package_b包中b_uitls包中的bUtils模块下的test_buitls函数
现在的tmp4.py里面是以上那样,假设我们现在重新运行之前的main.py:
frompackage_aimporttmp2
frompackage_bimporttmp4
frompackage_b.b_utils.bUtilsimporttest_bUtils
frompackage_a.a_utilsimportaUtils
tmp2.test_aTmp2()
tmp4.test_bTmp4()
aUtils.test_aUtils()
test_bUtils()
你会发现报错了:
Traceback(mostrecentcalllast):
File"C:/Users/龚鸥波/Desktop/test_import/main.py",line2,inmodule
frompackage_bimporttmp4
File"C:\Users\龚鸥波\Desktop\test_import\package_b\tmp4.py",line8,inmodule
fromtmp3importtest_bTmp3
ModuleNotFoundError:Nomodulenamed'tmp3'
我们在main.py里面导入了tmp4,tmp4里面调用了tmp3,我门运行tmp4.py是没问题,运行main.py有问题。这是因为,相对于main.py所在的目录,tmp3所在是在包package_b下面,在tmp4中就不能直接导入,可以改写成以下方式:
from.tmp3importtest_bTmp3
from.b_utils.bUtilsimporttest_bUtils
deftest_bTmp4():
print('这里是package_b包中tmp4模块下的test_bTmp4函数')
test_bTmp3()
test_bUtils()
这样就不会报错了:
这里是package_b包中tmp3模块下的test_bTmp3函数
这里是package_b包中b_uitls包中的bUtils模块下的test_buitls函数
这里是package_a包中tmp2模块下的test_aTmp2函数
这里是package_b包中tmp4模块下的test_bTmp4函数
这里是package_a包中a_uitls包中的aUtils模块下的test_aUitls函数
这里是package_b包中b_uitls包中的bUtils模块下的test_buitls函数
但是这时我们去重新运行tmp4.py,发现会报错了:
Traceback(mostrecentcalllast):
File"C:/Users/龚鸥波/Desktop/test_import/package_b/tmp4.py",line8,inmodule
from.tmp3importtest_bTmp3
ModuleNotFoundError:Nomodulenamed'__main__.tmp3';'__main__'isnotapackage
这里.表示的是__main__,我暂时也不清楚这时是什么意思,不过我们可以这么改写下:
fromtmp3importtest_bTmp3
fromb_utils.bUtilsimporttest_bUtils
exceptExceptionase:
from.tmp3importtest_bTmp3
from.b_utils.bUtilsimportte
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025山西航空产业集团有限公司校园招聘(第一批)43人笔试参考题库附带答案详解
- 2025四川雅安市宝兴县兴绿林业投资有限公司招聘(第二批)2人笔试参考题库附带答案详解
- 纺织行业考生的学习信念试题及答案
- 纺织工程师项目执行规范试题及答案
- 客房入股合同协议书
- 推拿合同协议书
- 施工安全合同协议书
- 店员处罚合同协议书
- 企业合同协议书
- 工程合同终止协议书
- 2025年4月新高考语文全国Ⅰ卷各地模考试题汇编之语用
- 山东省聊城市2025年高考模拟试题(二)数学+答案
- 小学数学西师大版(2024)三年级下册旋转与平移现象教学设计
- 田园综合体可行性研究报告
- 沈阳市东北大学非教师岗位招聘考试真题2024
- 2025年中考语文二轮复习:散文阅读 专题练习题(含答案)
- 高校宿管培训
- 2025届新高考教学教研联盟高三第二次联考政治试题及答案
- 2025年03月国家卫生健康委统计信息中心公开招聘人才派遣1人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 行政管理本科毕业论文-数字政府建设背景下的行政文化转型探析
- 赌博酒驾警示教育
评论
0/150
提交评论