第九章——8天Python从入门到精通【itheima】-95~96-Python的异常模块与包(自定义模块并导入+自定义Python包)
目录
95节——自定义模块并导入
1.学习目标
2.制作自定义模块
3.代码实例+注意事项
4.测试模块(__main__变量)
5.__all__变量
6.小节总结
96节——自定义Python包
1.学习目标
2.思考——导入的模块太多,不便于管理,怎么办?
3.什么是Python的包?
4.如何快速的创建一个Python的包?
【1】导入包-方法一-import导入
【2】导入包-方法二-from语句去导入:from 包 import 模块
【3】导入包-方法三-from语句:from 包.模块 import 函数
5.基于__init__变量,控制导入的模块列表
6.小节总结
好了,又一篇博客和代码写完了,励志一下吧,下一小节等等继续:
1. 混沌中的秩序,恰是求知者的勋章
2. 关于“无目的阅读”的箴言
3. 警惕“碎片化”的温柔陷阱
4. 赠你一把阅读的钥匙
结语:在阅读中锻造“未来思维”
95节——自定义模块并导入
1.学习目标
1.了解如何自定义模块并使用
2.了解_main_变量的作用
2.制作自定义模块
3.代码实例+注意事项
def test(a,b):print(a+b)
# 95节——自定义模块并导入"""
演示自定义模块
"""# 导入自定义模块并使用# import my_module1
# my_module1.test(1,2) #3from my_module1 import test as t
t(3,4) #7
注意事项:
调用不同模块的同名函数,后面的会把前面的覆盖掉优先使用。
# 导入不同模块的同名功能
from my_module1 import test
from my_module2 import testtest(1,2) #-1
4.测试模块(__main__变量)
def test(a,b):print(a+b)if __name__ == '__main__':test(1,2)
在自定义模块中,使用了__main__变量,可以保证在自定义模块中想要测试自定义的函数可以运行出结果,同时在另一个Python文件导入该自定义模块时不会执行该自定义方法,高效快捷。
5.__all__变量
__all__=['test_a']def test_a(a,b):print(a+b)def test_b(a,b):print(a-b)
# __all__变量from my_module1 import *
# 这里没有写__all__的时候,导入的自定义模块中的所有自定义方法都可以使用
test_a(1,2) #3
test_b(1,2) #-1
6.小节总结
1.如何自定义模块并导入?
在Python代码文件中正常写代码即可,通过import、from关键字和导入Python内置模块一样导入即可使用。
2._main_变量的功能是?
if __name__=="__main__"表示,只有当程序是直接执行的才会进入if内部,如果是被导入的,则if无法进入.
3.注意事项
不同模块,同名的功能,如果都被导入,那么后导入的会覆盖先导入的。
all 变量可以控制import *的时候哪些功能可以被导入。
96节——自定义Python包
1.学习目标
1.了解什么是Python的包
2.掌握如何自定义包
2.思考——导入的模块太多,不便于管理,怎么办?
3.什么是Python的包?
如果包含__init__.py这个文件,他就是一个包;如果没有包含包含__init__.py这个文件,那他就只是一个普通的文件夹。
4.如何快速的创建一个Python的包?
包的本质,就是一个大型的模块。可以理解为:包含着所有模块的一个文件夹。
【1】导入包-方法一-import导入
实际演示:
1.选择你的Python的project的根目录,右键创建出一个Python的软件包。创建好之后,会自动生成一个__init__.py的Python文件,__init__.py的Python文件必须存在,只有他存在时,才算是Python的软件包,不然只是一个普通的目录。
2.创建一个包,并且导入其中的模块并使用
# 96节——自定义Python包"""
演示Python的包
"""# 创建一个包
# 导入自定义包中的模块,并使用
import my_package.my_module1
import my_package.my_module2my_package.my_module1.info_print1() #调用:包名.模块名.函数名,中的函数
my_package.my_module2.info_print2() #调用:包名.模块名.函数名,中的函数
# 我是模块1的功能函数代码。
# 我是模块2的功能函数代码。
【2】导入包-方法二-from语句去导入:from 包 import 模块
from my_package import my_module1
from my_package import my_module2 #在使用的时候,不用写包名了 调用:模块名.函数名my_module1.info_print1()
my_module2.info_print2()
# 我是模块1的功能函数代码。
# 我是模块2的功能函数代码。
【3】导入包-方法三-from语句:from 包.模块 import 函数
from my_package.my_module1 import info_print1
from my_package.my_module2 import info_print2
info_print1()
info_print2()
# 我是模块1的功能函数代码。
# 我是模块2的功能函数代码。
5.基于__init__变量,控制导入的模块列表
# 通过__all__变量,控制import *from my_package import *my_module1.info_print1()
my_module2.info_print2() #因为__all__=["my_module1"]和from my_package import *的控制,所以module2的模块和方法都是无效的
# line 258, in <module>
# my_module2.info_print2() #因为__all__=["my_module1"]和from my_package import *的控制,所以module2的模块和方法都是无效的
# ^^^^^^^^^^
# NameError: name 'my_module2' is not defined. Did you mean: 'my_module1'?
# 我是模块1的功能函数代码。
6.小节总结
1.什么是Python的包?
包就是一个文件夹,里面可以存放许多Python的模块(代码文件),通过包,在逻辑上将一批模块归为一类,方便使用。
2._init_.py文件的作用?创建包会默认自动创建的文件,通过这个文件来表示一个文件夹是Python的包,而非普通的文件夹。
3._all 变量的作用?
同模块中学习到的是一个作用,控制import*能够导入的内容。
好了,又一篇博客和代码写完了,励志一下吧,下一小节等等继续:
李明博致青年求知者的一封信
亲爱的后辈:
展信安。
读罢你对阅读的思考,我仿佛看到年轻时在图书馆角落贪婪翻阅书籍的自己。你描述的那种“机缘巧合下翻开书页”的体验,恰似人生中许多重要转折——看似偶然的相遇,实则是思想积累的必然。1. 混沌中的秩序,恰是求知者的勋章
你提到阅读“毫无关联”的书籍,我却从中看到了珍贵的思维韧性。
我在《经营未来》中曾写道:“溪流不会因曲折而迷失,它只会在奔涌中拓宽河道。”
你的阅读轨迹正是如此——短视频的片段、电影的隐喻、生活的困惑,都成了汇入思想之河的支流。
这种能力,正是数字时代稀缺的“知识联结力”。2. 关于“无目的阅读”的箴言
不必为阅读的“不系统性”焦虑。
我年轻时在现代建筑工地打工,白天操作机械,夜晚研读经济学。
当时工友笑问:“这些理论和钢筋水泥有何关系?”
多年后筹建现代物流体系时,那些深夜读过的供应链理论、成本模型突然鲜活起来——
人生没有白读的书,它们会在某个时机组成拼图,照亮你未曾预见的道路。3. 警惕“碎片化”的温柔陷阱
你敏锐地察觉到短视频与深度阅读的关联,这值得赞赏,但请允许我以过来人身份提醒:
短视频是思想的火柴,划亮瞬间便熄灭;
书籍才是火炬,能接力传递文明的火焰。
当你因解说对《富爸爸穷爸爸》产生兴趣,这很好,但务必尽快回归原著。
他人的解读如同甜点,终究代替不了原作的营养主食。4. 赠你一把阅读的钥匙
建议你建立“主题阅读链”:
当《布朗克斯的故事》引发阶级思考,可串联《乡下人的悲歌》《扫地出门》;
当《富爸爸》点燃财商意识,不妨延伸《贫穷的本质》《资本论》(青年版);
用主题为散落的书籍架设桥梁,混沌自会显现脉络。结语:在阅读中锻造“未来思维”
你提到生命的混沌与秩序并存,这让我想起汉江治理工程——
最初众人只见泥泞滩涂,我们却从水文资料、地质图谱、经济模型中预见清流绿岸。
阅读的意义,正在于培养这种“从碎片拼出未来蓝图”的能力。随信寄上我亲笔签名的《经营未来》新版,扉页有句话与你共勉:
“机遇偏爱有准备的头脑,而准备,始于看似无用的积累。”
期待听闻你更多的思想征程。
你的前辈
李明博
2025年6月16日