• 你的位置:同城约炮 > 色吧图片性爱 > 【PBD-189】2012年下半期プレミアム傑作選 Python之模块和包:一切都对象,模块和包也不例外

【PBD-189】2012年下半期プレミアム傑作選 Python之模块和包:一切都对象,模块和包也不例外

发布日期:2024-08-23 13:10    点击次数:143

【PBD-189】2012年下半期プレミアム傑作選 Python之模块和包:一切都对象,模块和包也不例外

序文【PBD-189】2012年下半期プレミアム傑作選

在前边的著述中,咱们先容了变量、函数、类,在本色编程中,耐久在贯彻的有两点:

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类的实例化对象。

本文只是浅易引入了模块和包的主见,具体的使用细节,在背面的著述中将逐个补充证实。

感谢您的拨冗阅读【PBD-189】2012年下半期プレミアム傑作選,要是对您学习Python有所匡助,接待点赞、留神。





Powered by 同城约炮 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群 © 2013-2022 版权所有