概念解析
- 模块
- 包
- 库
- 框架
什么叫模块?
概念解析:为了使代码更容易维护,提高代码重用价值,可以将一组相关功能的代码写入一个单独的.py文件中,供别人使用,这个.py文件就被称为一个模块。
什么是包?
- 包是一个有层次的结构目录
- 具体表现形式,包含__init__.py文件目录,这个目录下有一个__init__.py的文件和其他模块或者子包。
下面看一下如何从 方法——函数——类——模块——包 的转变
第一步,最简单的需求,打印出 1,2,3…n,我们可以直接print(1),print(2),print3),print(4),…print(n),就可以得到想要的结果
print(1)
print(2)
print(3)
运行结果:可以得出,没有任何问题
1
2
3
第二步,甲方加需求了,再打印两份1,2,3…n的结果,同样的,可以复制一下上面的print方法
print(1)
print(2)
print(3)
print(1)
print(2)
print(3)
print(1)
print(2)
print(3)
运行结果,可以得到想要的结果,但是这代码看起来太低级了,这么多重复的代码,维护不方便,如果后面需求改了,需要每个代码都需要修改
1
2
3
1
2
3
1
2
3
这里要引入,函数封装的概念,将这个方法封装在函数里面,给后面的代码调用,同样实现上面的功能,但是代码就简洁好多
def t1():
print(1)
print(2)
print(3)
t1()
t1()
t1()
查看一下运行的结果
1
2
3
1
2
3
1
2
3
现在由于项目增加了功能,需要增加多一个函数方法,我们可以增加多一个t2
def t1():
print(1)
print(2)
print(3)
def t2():
print(11)
print(22)
print(33)
t1()
t2()
运行结果
1
2
3
11
22
33
上面可以得到想要的结果,但是后面如果有t1,t2,t3,t4…tn 个函数,而且每个函数实现的功能不一样,这个时候,我们又需要将函数进行分类了,我们引入类的概念,将功能相关的函数封装在一起。
class Tool:
@classmethod
def t1(cls):
print(1)
print(2)
print(3)
@classmethod
def t2(cls):
print(11)
print(22)
print(33)
class Tool1:
pass
class Tool2:
pass
class Animal:
@classmethod
def x1(cls):
pass
def x2(cls):
pass
class Dog:
pass
class Cat:
pass
- 上面可以看出,我们封装了很多方法,将很多方法放在不同的类里面,
- 实现了很多功能,代码也很简洁,
- 但是如果需要修改某个功能,或者别人只需调用其中一个功能,显得不太方便
- 当类和方法太多,而这些类又是实现不同功能,需要引入模块的概念,将功能相关的类放入同一个模块中。
- 模块就是将功能相关的代码写入同一个.py文件中
将Tool,Tool1,Tool2…Tooln工具类的类放入t_module模块,将动物相关的放入 a_module 模块。
.
├── a_module.py
├── t_module.py
t_module.py模块的类
class Tool:
@classmethod
def t1(cls):
print(1)
print(2)
print(3)
@classmethod
def t2(cls):
print(11)
print(22)
print(33)
class Tool1:
pass
class Tool2:
pass
a_module.py的类
class Animal:
@classmethod
def x1(cls):
pass
def x2(cls):
pass
class Dog:
pass
class Cat:
pass
现在我们尝试调用
import t_module
t_module.Tool.t1()
t_module.Tool.t1()
t_module.Tool.t1()
运行结果,同样实现了打印的功能
1
2
3
1
2
3
1
2
3
如果项目比较庞大,需要实现的功能很多,为了遵循python函数的高内聚低耦合的原则,我们将功能相关的模块放到同一个文件夹里面,并且在这个文件夹里面,创建一个__init__.py的文件,那么这个文件夹就变成了一个包的概念。
├── package1
│ ├── __init__.py
│ ├── t1.py
│ └── t2.py
什么叫做库?
- 参照其他编程语言的叫法
- 完成一定功能的代码集合
- 具体表现可以是一个模块,也可以是一个包(比如Pillow库)
什么是框架?
- 是一个架构层面的概念
- 从库功能的角度来看,解决一个开放性问题而设计的具有一定约束性的支撑结构
- 通过一个框架,可以快速实现一个问题解决的框架,按照框架的角色去填充,就可以完成一个项目。(flask,django)