2024-08-26 19:19 点击次数:106
小引高中 自慰
自拍视频在前边的著作中,咱们先容了变量、函数、类,在实质编程中,遥远在贯彻的有两点:
1、在Python中一切皆对象,是以函数、类、模块、包也都是一等公民。
2、非论是基于面向经过如故面向对象,咱们在实质编程中所辩论的都是若何提高代码的复用性,以及如何愈加便于膨胀。
从变量,到函数,再到类,代码的服用层级是在不停升迁的。从本文启动要先容的模块和包是更高层级的代码的组织与复用体式。
本文会愈加偏向于编程的念念维及成见,主要内容大要如下:1、模块化念念想
2、Python中的模块和包
3、模块和包亦然对象
模块化念念想
其实模块化的念念想由来已久,从工业转换、社会化大单干启动,就还是在期骗模块化念念想。
早期的工场主、成本族,惦记工东说念主掌合手一皆时代,选拔单干的口头,让每个工东说念主折柳认真一部单干序或者部分零件的出产,终末进行拼装。如斯一来,每个工东说念主大约愈加专注于特定的任务,从而提高了举座的效果。
单干配合有两个副家具,一个是出产出了可复用的模块,另一个便是模块化循序在工程中的鄙俚期骗,虽然也包括计算机科学。
每个零部件不在邃密耦合于特定机器,零件是愈加高内聚和低耦合的,从而提高了复用的可能。
而所谓的模块化循序的中枢便是:问题分析、模块已矣、模块集成,似乎恰是脱胎于社会化的单干配合。
回到咱们的主题Python编程上,在编程中的模块化念念想,将代码的复用,不单是局限于某个技俩里面。联想、已矣广泛的模块,更不错期骗于后续新的技俩中,从而更猛进度地升迁项目的树立效果。
是以,模块和包,更要害的在于对这种复用念念想的清爽与践行,实质使用起来高中 自慰,并不复杂。
Python中的模块和包
具体到Python中,其实咱们在前边的著作中,还是在反复使用模块了。Python中任何一个Python源文献(.py),都不错是一个模块,都不错算作模块来使用。
在一个Python模块中,不错界说变量、函数、类,也不错导入其他模块。
而Python中的包,不错简陋清爽为包含一个或者多个模块的目次/文献夹。
是以,不错这么简约的清爽为,Python中的模块不错等同为一个Python源文献,Python中的包,不错是包含Python源文献的文献夹。
如故以打工东说念主举个例子,此次选拔模块化的念念想,将围绕打工东说念主的功能放到一个Python文献中,算作一个颓败的模块;然后将使用打工东说念主功能的代码放到另一个算作进口文献的Python文献中。
模块代码:dagongren.py
classDaGongRen:def__init__(self, name, salary=3000): self.name = name self.salary = salarydefwork(self): print(f"打工东说念主{self.name}[薪水: {self.salary}]在勤快使命")defjiaxin(team):for dgr in team: dgr.salary = round(dgr.salary * 1.1)print("这是在模块[dagongren]中")
进口文献:main.py
from dagongren import DaGongRen, jiaxinprint('这是在进口文献中')zs = DaGongRen('张三')ls = DaGongRen('李四', 4000)zs.work()ls.work()print('涨薪后')jiaxin([zs, ls])zs.work()ls.work()
推论终结:
推论终结中,不错看到在模块dagongren通过import导入时,其中的print()语句也被推论了,然后才是推论main.py中的语句。
推论完成后,会发当代码目次中多了一个__pycache__的目次:
这个目次,咱们之前检察字节码时也简陋过的,当使用import语句导入模块时,Python证据器会觉得模块可能被重迭使用,为了提供运行的效果,会将模块代码编译为字节码,再次使用到该模块时,凯旋使用编译后的字节码文献即可。
模块和包亦然对象
著作中,咱们一直在反复说起“Python中一切皆对象”,模块和包当然也不例外,亦然Python中的对象。
咱们不错通过代码来简陋考证一下这个论断,凯旋看代码:
咱们领先界说了一个文献夹package_test算作包,然后在文献夹中创建一个module_test.py文献,算作模块,模块中仅有一滑代码:
print("这是在模块[module_test]中")
新的进口文献:main_2.py
import package_testfrom package_test import module_testimport sysprint(package_test)print(type(package_test))print(module_test)print(type(module_test))print(sys)print(type(sys))# sys.modules保存了现时加载的统共模块,大部分是内置模块,咱们自界说的模块在字典的终末print(sys.modules)print(sys.modules['package_test'])print(sys.modules['package_test.module_test'])
目次结构如下:
推论终结如下:
从推论终结中不错得出如下论断:
1、包、自界说的模块、内置模块都是对象,是由module这个类实例化的对象。
2、Python证据器加载的统共模块都会保存在sys.modules这个字典中,key为模块名,value为对应的实例对象。
追念
本文简陋先容了模块化念念想的由来,过甚在更高等别的代码复用场景中的期骗。在Python中模块和包,对应与Python文献及文献夹,况兼,模块和包都是对象,是module类的实例化对象。
本文只是简陋引入了模块和包的成见,具体的使用细节,在后头的著作中将逐个补充证据。
感谢您的拨冗阅读高中 自慰,要是对您学习Python有所匡助,宽饶点赞、良善。