1.什么是模块化开发
- 模块化是代码的组成的一种方式,Python中的每一个文件就是模块;
- 在Python中,文件有三种方式进行组织:Python文件(也就是Python模块)、目录、包;
- 包和目录的区别:包内部多一个
__init__.py
文件,使得包能够被模块导入,而目录不能;
2.模块化开发的好处
- 模块化开发能够将不同的功能组装在一起,实现功能的累加,诸多功能组装在一起,最终形成项目;
3.如何进行模块化开发以及注意点
- 功能模块的分类;
- 功能模块接口的定义;
- 异常捕获;
4.Python文件与普通文件的区别
- Python中的文件也就是以.py后缀名结尾的文件,每一个
.py
后缀名结尾的文件就是Python的一个模块,能够被其他模块所导入;
5.Python包与目录的区别
- 包和目录的不同之处在于:包内部多一个
__init__.py
文件,使得包能够被模块导入,而目录不能;
6.绝对导入和相对导入
- 绝对导入:从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...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。