Python入门之模块与包
当我们编写代码时,有些功能需要在多个程序中使用,为了不重复写代码,我们可以将这些功能封装到一个单独的.py文件中,然后在需要使用这些功能的程序中 import 这个文件,这个文件就称为模块(module),而多个模块放在一个文件夹中,这个文件夹就是一个包(package)。
定义模块
定义一个模块很简单,我们只需要在文件中编写我们要封装的功能的代码,然后将这个文件保存为 .py 格式。如果我们想要导入这个模块,我们只需要在使用这些功能的程序中使用 import 关键字导入这个模块即可。
以下是一个求和功能的示例:
# 定义一个名为math的模块
def add(a, b):
return a + b
def subtract(a, b):
return a - b
导入模块
在其他程序中导入模块很简单,只需要使用 import 关键字加上模块的名字即可。比如我们可以在另一个文件中导入我们刚刚定义的 math 模块。
# 导入 math 模块
import math
# 使用 math 模块中的 add 函数
print(math.add(1, 2)) # 输出 3
# 使用 math 模块中的 subtract 函数
print(math.subtract(2, 1)) # 输出 1
定义包
为了更好地组织我们的模块,我们可以将多个模块放在一个文件夹中,这个文件夹就是一个包。下面是一个简单的包的示例,我们在一个名为 mypackage
的文件夹中创建一个 math
模块和一个 string
模块。
mypackage/
|-- __init__.py
|-- math.py
|-- string.py
在这个包中,我们需要在 mypackage
目录下创建一个名为 __init__.py
的文件,这个文件可以为空,也可以包含一些初始化代码。
更进一步地,我们可以在 mypackage
目录下再创建一个名为 calc
的子目录,并在这个子目录中创建一个名为 statistics
的模块。
mypackage/
|-- __init__.py
|-- math.py
|-- string.py
|-- calc/
|-- __init__.py
|-- statistics.py
现在我们就可以在程序中导入这些模块和包了。使用 import
关键字加上模块和包的路径即可。
# 导入模块
from mypackage import math
print(math.add(1, 2))
# 导入包中的模块
from mypackage.calc import statistics
print(statistics.mean([1,2,3,4,5]))
示例
下面是一个更为复杂的示例,我们在一个名为 shape
的包中定义了三个模块,分别是 circle
、triangle
、rectangle
,并在 shape
目录下创建一个名为 __init__.py
的文件。
shape/
|-- __init__.py
|-- circle.py
|-- triangle.py
|-- rectangle.py
init.py 文件中的代码如下:
# 在这里导入所有的模块,方便其他地方导入 shape 包中的模块
from . import circle
from . import triangle
from . import rectangle
circle.py 文件中的代码如下:
# 定义一个求圆的面积的函数
def area(radius):
return 3.14 * radius ** 2
triangle.py 文件中的代码如下:
# 定义一个求三角形面积的函数
def area(base, height):
return 0.5 * base * height
rectangle.py 文件中的代码如下:
# 定义一个求矩形面积的函数
def area(width, height):
return width * height
现在我们就可以在程序中导入 shape 包中的模块了,并使用它们提供的功能。
# 导入 shape 包
import shape
# 使用 circle 模块中的 area 函数
print(shape.circle.area(5)) # 输出 78.5
# 使用 triangle 模块中的 area 函数
print(shape.triangle.area(4, 5)) # 输出 10.0
# 使用 rectangle 模块中的 area 函数
print(shape.rectangle.area(4, 5)) # 输出 20
这样我们就可以非常方便地组织和重用我们的代码了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python入门之模块与包 - Python技术站