第6天:Python 模块和包
先给大家解释一下模块、包、库之间的概念:
模块(module)其实就是 py 文件,里面定义了一些函数、类、变量等
包(package)是多个模块的聚合体形成的文件夹,里面可以是多个 py 文件,也可以嵌套文件夹
库是参考其他编程语言的说法,是指完成一定功能的代码集合,在 Python 中的形式就是模块和包
模块
由上面的内容我们得知模块就是一个 py 文件,这个文本文件中存储着一组功能,方面我们再次使用的时候,提高代码的复用率。我们成这一个的一个 py 文件为 Python 模块(Module)。其他 Python 脚本中,通过 import 载入定义好的 Python 模块。
定义和调用 Python 模块
我们先来看如何定义一个 Python 模块。
定义一个 hello.py 模块,内容如下:
print("Hello World!")
模块名.函数名
来进行调用import hello
# 现在可以调用模块里包含的函数了
hello.sayhello()
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
from ... import ...
模块提供了类似名字空间的限制,允许 Python 从模块中导入指定的符号(变量、函数、类等)到当前模块。导入后,这些符号就可以直接使用,而不需要前缀模块名。
语法如下:
from hello import sayhello
sayhello()
def world():
print("Python World!")
from hello import *
sayhello()
world()
Python World!
包
包(package)是 Python 中对模块的更高一级的抽象。简单来说,Python 允许用户把目录当成模块看待。这样一来,目录中的不同模块文件,就变成了「包」里面的子模块。此外,包目录下还可以有子目录,这些子目录也可以是 Python 包。这种分层,对模块识别、管理,都是非常有好处的。
特别地,对于一些大型 Python 工具包,内里可能有成百上千个不同功能的模块。科学计算领域,SciPy, NumPy, Matplotlib 等第三方工具,都是用包的形式发布的。
包定义
常见的包结构如下:
-------__init__.py
-------moduleName1.py
-------moduleName2.py
------- ...
__init__.py
文件。-------__init__.py
-------calculator.py
return a+b
def reduce(a,b) :
return a-b
def multiply(a,b) :
return a*b
def divide(a,b) :
return a/b
使用 Python 包
calculator.py
import cal.calculator
# 使用包的模块的方法
print(cal.calculator.add(1,2))
from ... import ...
语句来简化一下。from cal import calculator
# 使用包的模块的方法
print(calculator.multiply(3,6))
总结
本节给大家介绍了 Python 模块和包的使用,对 Python 工程师使用提供了支撑,模块和包的合理使用不断可以提高代码的使用效率,也可以更规范的整个工程项目的调用。
参考:
https://liam.page/2017/07/23/modules-and-packages-of-python/
系列文章