如何在Python 3中导入模块

介绍

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安装包的一部分。

信息:要跟着本教程中的示例代码进行操作,请在本地系统上运行python3命令,打开Python交互式shell。然后,你可以在>>>提示后添加、复制或编辑示例。

要检查这些Python模块是否已准备就绪,请进入您的本地Python 3编程环境或基于服务器的编程环境,并在命令行中启动Python解释器,如下所示:

  1. python

在解释器中,您可以运行import语句来确保给定的模块已准备好调用,如下所示:

  1. import math

由于math是一个内置模块,您的解释器应该完成任务而不反馈,返回到提示符。这意味着您无需执行任何操作即可开始使用math模块。

让我们使用一个您可能尚未安装的模块,如2D绘图库matplotlib,来运行import语句:

  1. import matplotlib

如果matplotlib未安装,您将收到以下错误:

Output
ImportError: No module named 'matplotlib'

您可以使用CTRL + D来退出Python解释器,然后使用pip安装matplotlib

接下来,我们可以使用pip安装matplotlib模块:

  1. pip install matplotlib

安装完成后,您可以在Python解释器中使用import matplotlib导入matplotlib,而且不会出现错误。

导入模块

要使用模块中的函数,您需要使用import语句导入模块。

一个import语句由import关键字和模块名称组成。

在Python文件中,这将在代码顶部声明,在任何shebang行或一般注释下。

因此,在Python程序文件my_rand_int.py中,我们将以这种方式导入random模块以生成随机数:

my_rand_int.py
import random

当我们导入一个模块时,我们将其作为单独的命名空间在当前程序中使其可用。这意味着我们将不得不使用点符号引用函数,如[模块].[函数]

实际上,在random模块的示例中,这可能看起来像是调用函数的函数:

  • random.randint(),它调用函数返回一个随机整数,或者
  • random.randrange(),它调用函数返回指定范围内的一个随机元素。

让我们创建一个for循环来展示我们如何在我们的my_rand_int.py程序中调用random模块的函数:

my_rand_int.py
import random


for i in range(10):
    print(random.randint(1, 25))

这个小程序首先在第一行导入了random模块,然后进入一个循环,该循环将处理10个元素。在循环内,程序将打印一个在1到25范围内(包括1和25)的随机整数。整数125作为其参数传递给random.randint()

当我们运行带有python my_rand_int.py命令的程序时,我们将收到10个随机整数作为输出。由于这些是随机的,每次运行程序时可能会得到不同的整数,但它们会生成类似这样的内容:

Output
6 9 1 14 3 22 10 1 15 9

整数不应低于1或高于25。

如果您想要使用来自多个模块的函数,可以通过添加多个import语句来实现:

my_rand_int.py
import random
import math

您可能会看到导入多个模块的程序,使用逗号分隔它们,例如import random, math,但这与PEP 8风格指南不一致。

要使用我们的附加模块,我们可以将来自math的常量pi添加到我们的程序中,并减少打印的随机整数数量:

my_rand_int.py
import random
import math


for i in range(5):
    print(random.randint(1, 25))

print(math.pi)

现在,当我们运行程序时,我们将收到以下输出,其中pi的近似值是我们的最后一行输出:

Output
18 10 7 13 10 3.141592653589793

import语句允许您将一个或多个模块导入到您的Python程序中,从而让您可以使用这些模块中构造的定义。

使用fromimport

要引用程序命名空间中的模块中的项目,您可以使用fromimport语句。以这种方式导入模块时,您可以通过名称而不是点表示法引用函数

在这种构造中,您可以指定直接引用哪些定义。

在其他程序中,您可能会看到import语句使用星号(*)作为通配符来引用模块中定义的所有内容,但是这在PEP 8中被不鼓励。

让我们首先回顾一下从random模块导入一个特定函数randint()

my_rand_int.py
from random import randint

在这里,我们首先调用from关键字,然后是模块的名称random。接下来,我们使用import关键字并调用我们想要使用的特定函数。

现在,当我们在程序中实现此函数时,我们将不再使用点表示法写出函数,而是只写randint()

my_rand_int.py
from random import randint


for i in range(10):
    print(randint(1, 25))

运行程序时,您将收到类似于我们之前收到的输出。

使用fromimport构造允许我们在程序的命名空间中引用模块的定义元素,使我们避免使用点表示法。

模块别名

使用as关键字可以在Python中修改模块及其函数的名称。

您可能想要更改名称,因为您在程序中已经使用了相同的名称,另一个您导入的模块也使用了该名称,或者您可能想要缩写您经常使用的较长名称。

该语句的构造如下所示:

import [module] as [another_name]

让我们修改my_math.py程序文件中math模块的名称。我们将math模块的名称更改为m,以缩写它。我们修改后的程序将如下所示:

my_math.py
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进行安装。

利用模块使我们的程序更加健壮和强大,因为我们正在利用现有的代码。我们还可以创建自己的模块供我们自己和其他程序员在将来的程序中使用。

Source:
https://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3