模块化开发原理(模块化开发)

1.什么是模块化开发

首先我们要知道什么是模块化开发,模块化就是代码组成的一种方式,Python中的每一个文件就是模块,在Python中,文件有三种方式进行组织:Python文件(也就是Python模块)、目录。其中包和目录的区别在于,包内部多一个__init__.py文件,使得包能够被模块导入,而目录不能被模块导入;

2.模块化开发的好处

那到底模块化开发有什么好处呢,模块化开发能够将不同的功能组装在一起,实现功能的累加,诸多功能组装在一起,最终形成项目;

3.如何进行模块化开发以及注意点
  • 功能模块的分类;
  • 功能模块接口的定义;
  • 异常捕获;
4.Python文件与普通文件的区别

Python中的文件也就是以.py后缀名结尾的文件,每一个.py后缀名结尾的文件就是Python的一个模块,能够被其他模块所导入;

5.绝对导入和相对导入

模块化开发原理(模块化开发)(1)

模块化开发-01.png

  • 绝对导入:从python的搜索路径中导入对应的包中的模块;

from package import module

  • 相对导入: 相对导入必须在包内部使用,且有相对导入的模块,无法直接运行,必须使用python -m package.module这样的方式运行,或者被__main__模块导入,之后使用;

from . import module

6.使用all过滤模块属性的可见性
  • 在模块导入中,模块的属性都能够被导入,没有私有和保护属性的概念;

在其他模块中,都可以导入对应模块,使用 from package import a, _a, __a a = 'hello' _a = 'hello' __a = 'hello'

  • 但是在使用 from package import *的时候,保护属性和私有属性不会被导入;
  • 使用 __all__ = ['add', 'a',]可以显示申明能够被导入的属性;
7.slot的使用

class Student: __slots__ = ('name', 'age') def __init__(self): self.name = 'Summer' self.age = 22 def show(self): print(self.name) print(self.age) stu= Student() print(stu.name) print(stu.age) print(stu.__dict__) # 报错,AttributeError

其实使用__slots__主要是用来告诉Python不要使用字典的,而且只给一个固定集合的属性分配空间,所以使用slot可以加快属性访问速度减少内存消耗

8.为什么要使用if __name__ == '__main__'

def way(): print("hello") if __name__ == '__main__': way()

如上,我们可以看到if __name__ == '__main__'就相当于Python模拟的程序入口,Python本身并没有这么规定,这只是一种编码习惯。由于模块之间相互引用,不同模块可能有这样的定义,而程序入口只有一个。那到底哪个程序入口被选中,这取决于__name__的值,__name__ 是内置变量,用于表示当前模块的名字,如果一个模块被直接运行,其 __name__ 值为__main__

if __name__ == '__main__'主要用于测试,功能调试等,就是为了不让测试代码污染模块;

参考:https://www.9xkd.com/user/plan-view.html?id=3182615850

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页