目录
一、Python 模块:开启代码复用的大门
在 Python 的世界里,模块就像是一个个魔法盒子,每个盒子都装着特定的功能和工具。它们不仅是组织代码的好帮手,更是实现代码复用的关键。想象一下,你在开发一个大型项目,其中有许多重复的功能,比如数据处理、文件操作等。如果没有模块,你可能需要在每个需要这些功能的地方重复编写代码,这不仅浪费时间,还容易出错。而有了模块,你只需要把这些功能封装在一个模块中,然后在需要的地方导入并使用即可,是不是很方便呢?
1.1 模块的基本使用
Python 中导入模块的方式有多种,最常见的就是使用import语句。比如,要导入 Python 标准库中的math模块,我们可以这样写:
import math
导入模块后,就可以使用模块中定义的函数、类和变量了。例如,使用math模块中的sqrt函数计算一个数的平方根:
result = math.sqrt(16)
print(result) # 输出:4.0
除了导入整个模块,还可以使用from...import语句导入模块中的特定函数、类或变量。比如,只导入math模块中的sqrt函数:
from math import sqrt
result = sqrt(16)
print(result) # 输出:4.0
这样在后续的代码中,就可以直接使用sqrt函数,而无需加上模块名前缀。另外,还可以使用as关键字给导入的模块或函数取别名,以简化代码。例如:
import math as m
result = m.sqrt(16)
print(result) # 输出:4.0
from math import sqrt as s
result = s(16)
print(result) # 输出:4.0
1.2 深入模块:包与相对导入
当项目规模逐渐增大,模块的数量也会越来越多,这时就需要一种更高级的组织方式,这就是包(Package)。包本质上是一个包含多个模块的文件夹,并且在这个文件夹中必须有一个名为__init__.py的文件,这个文件可以为空,也可以包含一些初始化代码。例如,我们创建一个名为my_package的包,其目录结构如下:
my_package/
__init__.py
module1.py
module2.py
在module1.py中定义一个函数:
def func1():
print("This is func1 in module1")
在module2.py中定义另一个函数:
def func2():
print("This is func2 in module2")
要使用my_package包中的模块,可以这样导入:
import my_package.module1
import my_package.module2
my_package.module1.func1() # 输出:This is func1 in module1
my_package.module2.func2() # 输出:This is func2 in module2
也可以使用from...import语句导入:
from my_package import module1
from my_package import module2
module1.func1() # 输出:This is func1 in module1
module2.func2() # 输出:This is func2 in module2
&nb