最近发现一个问题,好像很多学Python的同学都搞不清楚库、包和模块之间的区别。
反正这三者都是通过import和from…import…语句实现的,会用就行,也不用在意过多的细节。
直到上周我发现这个问题竟然在某大厂的Python岗位招聘面试中出现,并“迷”倒不少应聘者,我才觉得这个知识有必要普及下。
模块(module)
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
简单来说任何一个以.py的文件都可以视为是一个模块(module)。
这个模块的功能可能就只有一个打印Hello World。
「hello_world.py」
def print_hello_world():
print("Hello World")
当一个项目的功能很复杂的时候,我们可以把代码分割成很多不同的模块,主码代码仅保留实现逻辑,
例如:登录、查询、加密、解密…
分割成不同的模块之后,无论维护还是开发都会方便很多。
当某个功能出Bug后,也比较好定位代码中的Bug处。
包(Package)
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
简单来说,包就是文件夹,但该文件夹下必须存在 init.py 文件, 该文件的内容可以为空。init.py
用于标识当前文件夹是一个包。
如果说模块是一个py文件的话,那么包就是一个含有__init__.py文件的文件夹。