模块化开发

1.什么是模块化开发

  • 模块化是代码的组成的一种方式,Python中的每个文件就是模块;
  • 在Python中,文件有三种方式进行组织:Python文件(也就是Python模块)、目录、包;
  • 包和目录的区别:包内部多一个__init__.py文件,使得包可以被模块导入,而目录不能;

2.模块化开发的好处

  • 模块化开发可以将不一样的功能组装在一块儿,实现功能的累加,诸多功能组装在一块儿,最终造成项目;

3.如何进行模块化开发以及注意点

  • 功能模块的分类;
  • 功能模块接口的定义;
  • 异常捕获;

4.Python文件与普通文件的区别

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

5.Python包与目录的区别

  • 包和目录的不一样之处在于:包内部多一个__init__.py文件,使得包可以被模块导入,而目录不能;

6.绝对导入和相对导入

模块化开发-01.png

  • 绝对导入:从python的搜索路径中导入对应的包中的模块;
from package import module
  • 相对导入: 相对导入必须在包内部使用,且有相对导入的模块,没法直接运行,必须使用python -m package.module这样的方式运行,或者被__main__模块导入,以后使用;
from . import module

7.使用all过滤模块属性的可见性

  • 在模块导入中,模块的属性都可以被导入,没有私有和保护属性的概念;
在其余模块中,均可以导入对应模块,使用 from package import a, _a, __a
a = 'hello'
_a = 'hello'
__a = 'hello'
  • 可是在使用 from package import * 的时候,保护属性和私有属性不会被导入;
  • 使用 __all__ = ['add', 'a',]能够显示申明可以被导入的属性;

8.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
  • 使用slot能够加快属性访问速度;
  • slot能够减小内存消耗;

9.为何要使用if __name__ == '__main__'

  • 用于测试,功能调试,不让测试代码污染模块;
  • if __name__ == '__main__' 就至关因而 Python 模拟的程序入口,因为模块之间相互引用,不一样模块可能都有这样的定义,而入口程序只能有一个,哪一个入口程序被选中取决于 __name__ 的值,__name__ 是内置变量,用于表示当前模块的名字,若是一个模块被直接运行,其 __name__ 值为 __main__

参考:https://www.9xkd.com/user/pla...html

相关文章
相关标签/搜索