Python 编程语言自带各种内置函数。其中包括一些常见的函数,例如:
print()
用于打印表达式abs()
用于返回一个数的绝对值int()
用于将其他数据类型转换为整数len()
用于返回序列或集合的长度然而,这些内置函数是有限的,我们可以利用模块来创建更复杂的程序。
模块 是由 Python .py
文件组成的 Python 代码。任何 Python 文件都可以被引用为一个模块。一个名为 hello.py
的 Python 文件具有模块名称 hello
,可以被导入到其他 Python 文件中,或者在 Python 命令行解释器中使用。您可以通过阅读《如何在 Python 3 中编写模块》来了解如何创建自己的模块。
模块可以定义函数、类和变量,您可以在其他 Python .py
文件中或通过 Python 命令行解释器中引用这些函数、类和变量。
在 Python 中,通过使用 import
语句来访问模块。当您这样做时,您执行模块的代码,保持定义的作用域,以便您当前的文件可以利用这些定义。
例如,当 Python 导入一个名为 hello
的模块时,解释器首先会搜索内置模块中是否存在名为 hello
的模块。如果没有找到内置模块,Python 解释器将在它从 sys.path
变量接收到的目录列表中搜索名为 hello.py
的文件。
本教程将引导您检查和安装模块,导入模块以及为模块设置别名。
您应该已经安装了 Python 3,并在您的计算机或服务器上设置了编程环境。如果您还没有设置编程环境,可以参考适用于您操作系统(Ubuntu、CentOS、Debian 等)的本地编程环境或服务器编程环境的安装和设置指南。
Python 标准库中内置了许多模块,这些模块提供了对系统功能的访问或提供了标准化的解决方案。Python 标准库是每个 Python 安装的一部分。
要检查这些 Python 模块是否已准备就绪,请进入您的本地 Python 3 编程环境或基于服务器的编程环境,并在命令行中启动 Python 解释器,如下所示:
python
在解释器中,您可以运行 import
语句,以确保给定的模块已准备好调用,例如:
import math
由于 math
是一个内置模块,您的解释器应该会在不返回任何反馈的情况下完成任务,并返回到提示符。这意味着您无需执行任何操作即可开始使用 math
模块。
让我们使用一个您可能尚未安装的模块,如 2D 绘图库 matplotlib
,来运行 import
语句:
import matplotlib
如果未安装 matplotlib
,您将收到以下错误:
ImportError: No module named 'matplotlib'
您可以使用 CTRL + D
来退出 Python 解释器,然后使用 pip
安装 matplotlib
。
接下来,我们可以使用 pip
来安装 matplotlib
模块:
pip install matplotlib
安装完成后,您可以在 Python 解释器中使用 import matplotlib
导入 matplotlib
,并且不会出现错误。
要使用模块中的函数,您需要使用 import
语句导入模块。
import
语句由 import
关键字和模块的名称组成。
在 Python 文件中,这将在代码顶部声明,在任何 shebang 行或一般注释之下。
因此,在 Python 程序文件 my_rand_int.py
中,我们将以以下方式导入 random
模块以生成随机数:
import random
当我们导入一个模块时,我们将其作为一个独立的命名空间在当前程序中使用。这意味着我们必须使用点符号引用函数,例如 [module].[function]
。
在实践中,以 random
模块为例,这可能看起来像是调用 random.randint()
函数返回一个随机整数,或者调用 random.randrange()
函数返回指定范围内的随机元素。
让我们创建一个 for
循环,以展示如何在我们的 my_rand_int.py
程序中调用 random
模块的函数:
import random
for i in range(10):
print(random.randint(1, 25))
这个小程序首先在第一行导入 random
模块,然后进入一个将处理 10 个元素的 for
循环。在循环内,程序将打印出 1 到 25(包括 25)范围内的随机整数。整数 1
和 25
被传递给 random.randint()
作为其参数。
当我们运行 python my_rand_int.py
程序时,我们将收到 10 个随机整数作为输出。由于这些是随机的,每次运行程序时可能会得到不同的整数,但它们将生成类似于以下内容:
6
9
1
14
3
22
10
1
15
9
这些整数不应该小于 1 或大于 25。
如果您想要使用多个模块的函数,可以通过添加多个 import
语句来实现:
import random
import math
您可能会看到导入多个模块的程序,使用逗号分隔它们,例如 import random, math
,但这与 PEP 8 风格指南不一致。
为了使用我们的额外模块,我们可以将 math
模块中的常数 pi
添加到我们的程序中,并减少打印出的随机整数数量:
import random
import math
for i in range(5):
print(random.randint(1, 25))
print(math.pi)
现在,当我们运行程序时,我们将收到类似于以下内容的输出,其中我们的最后一行输出是 pi 的近似值:
18
10
7
13
10
3.141592653589793
import
语句允许您将一个或多个模块导入到您的 Python 程序中,让您可以使用这些模块中构建的定义。
from
… import
要在程序的命名空间中引用模块中的项目,您可以使用 from
… import
语句。以这种方式导入模块时,您可以通过名称引用函数,而不是通过点符号引用。
在这种构造中,您可以指定要直接引用的定义。
在其他程序中,您可能会看到 import
语句使用通配符 (*
) 来引用模块中定义的所有内容,但这在 PEP 8 中是不被鼓励的。
让我们首先回顾一下从 random
模块中导入一个特定函数 randint()
:
from random import randint
在这里,我们首先调用 from
关键字,然后是模块的名称 random
。接下来,我们使用 import
关键字,并调用我们想要使用的特定函数。
现在,当我们在程序中实现这个函数时,我们将不再使用 random.randint()
的点符号,而只会写 randint()
:
from random import randint
for i in range(10):
print(randint(1, 25))
当您运行程序时,您将收到与之前类似的输出。
使用 from
… import
构造允许我们在程序的命名空间中引用模块的定义,从而避免使用点符号。
通过使用 as
关键字,可以在 Python 中修改模块及其函数的名称。
您可能想要更改名称,因为您在程序中已经使用了相同的名称,您导入的另一个模块也使用了该名称,或者您可能想要缩写您经常使用的较长名称。
这个语句的构造如下:
import [module] as [another_name]
让我们在我们的 my_math.py
程序文件中修改 math
模块的名称。我们将模块名称从 math
修改为 m
,以缩写它。我们修改后的程序将如下所示:
import math as m
print(m.pi)
print(m.e)
在程序中,我们现在将 pi
常数称为 m.pi
而不是 math.pi
。
对于一些模块,使用别名是很常见的。matplotlib.pyplot
模块的官方文档要求使用 plt
作为别名:
import matplotlib.pyplot as plt
这允许程序员将较短的单词 plt
附加到模块中的任何函数,例如 plt.show()
。您可以在我们的“如何使用 matplotlib
在 Python 3 中绘制数据”教程中看到这个别名导入语句的使用。
当我们导入模块时,我们能够调用不是内置于 Python 中的函数。一些模块作为 Python 的一部分安装,而一些模块我们将通过 pip
安装。
利用模块使我们的程序更加健壮和强大,因为我们正在利用现有的代码。我们还可以为自己创建模块,供将来的程序员在未来的程序中使用。