Python 模块
- 模块化编程:在 Python 中,我们可以通过模块化方式组织代码,将不同功能的代码分开存储在不同文件中,使代码更整洁、易于维护。
- 导入和使用模块:可以使用
import
关键字导入模块,之后可通过模块名和点操作符访问模块中的函数和变量。 - 模块导入的灵活性:Python 允许从模块中导入特定的函数或变量,甚至可以重命名模块以简化代码,但避免使用星号 (*) 导入所有名称,以保持代码清晰。
当我们的程序变得越来越大时,它可能包含许多代码行。我们可以使用模块将代码分离到不同的文件中,而不是将所有内容放在一个文件中,这样可以根据它们的功能进行分离。这使得我们的代码更有组织性,也更易于维护。
模块是包含用于执行特定任务的代码的文件。一个模块可能包含变量、函数、类等。让我们看一个例子,
让我们创建一个模块。输入以下内容并将其保存为 example.py
。
# Python 加法模块
def add(a, b):
result = a + b
return result
在这里,我们在一个名为 example
的模块内定义了一个函数 add()
。该函数接收两个数字并返回它们的和 。
在 Python 中导入模块
我们可以将一个模块内的定义导入到另一个模块或 Python 的交互式解释器中。
我们使用 import
关键字来做到这一点。要导入我们之前定义的 example
模块,我们在 Python 提示符中输入以下内容。
import example
这不会直接在当前符号表中导入 example
中定义的函数名称。它只导入模块名 example
到那里。
使用模块名,我们可以使用点 .
运算符来访问函数。例如:
addition.add(4,5) # 返回 9
注意:
- Python 有大量的标准模块。你可以查看Python 标准模块的完整列表及其用例。
- 标准模块可以像我们导入用户定义的模块一样被导入。
导入 Python 标准库模块
Python 标准库包含超过 200 个模块。我们可以根据需要导入一个模块。
假设我们想获得 pi
的值,首先我们导入数学模块并使用 math.pi
。例如,
# 导入标准数学模块
import math
# 使用 math.pi 获取 pi 的值
print("pi 的值是", math.pi)
输出
pi 的值是 3.141592653589793
使用重命名导入 Python
在 Python 中,我们还可以通过重命名来导入一个模块。例如,
# 通过重命名导入模块
import math as m
print(m.pi)
# 输出:3.141592653589793
在这里,我们将 math
模块重命名为 m
。这在某些情况下可以节省我们的输入时间。
注意,我们的范围内不识别名为 math
的名称。因此,math.pi
是无效的,而 m.pi
是正确的实现。
Python 的 from...import 语句
我们可以从一个模块中导入特定的名称,而不必整个导入该模块。例如,
# 仅从数学模块导入 pi
from math import pi
print(pi)
# 输出:3.141592653589793
在这里,我们只从 math
模块中导入了 pi
属性。
导入所有名称
在 Python 中,我们可以使用以下结构从一个模块中导入所有名称(定义):
# 从标准模块 math 中导入所有名称
from math import *
print("pi 的值是", pi)
在这里,我们已经从数学模块中导入了所有定义。这包括在我们的范围内可见的所有名称,除了 以下划线开头的(私有定义)。
使用星号 (*) 符号导入所有内容不是一个好的编程实践
。这可能导致标识符的重复定义。它还会影响我们代码的可读性。
dir() 内置函数
在 Python 中,我们可以使用 dir()
函数列出模块中的所有函数名称。
例如,之前我们在 example
模块中定义了一个函数 add()
。
我们可以以以下方式在 example
模块中使用 dir
:
dir(example)
['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__initializing__',
'__loader__',
'__name__',
'__package__',
'add']
在这里,我们可以看到一个排序的名称列表(连同 add
)。所有以下划线开头的其他名称都是与模块相关联的默认 Python 属性(非用户定义的)。
例如,__name__
属性包含模块的名称。
import example
example.__name__
# 输出:'example'
使用 dir()
函数而不带任何参数,我们可以找出当前命名空间中定义的所有名称。
a = 1
b = "hello"
import math
dir()
['__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter']