如何在 Python 3 中导入模块

介绍

Python 编程语言配备了各种 内置函数

  • print() 将表达式打印出来
  • abs() 将数字 的绝对值返回
  • int() 将另一种数据类型转换为整数
  • len() 将序列或集合的长度返回

然而,这些内置功能是有限的,我们可以利用模块来制作更复杂的程序。

模块是由Python代码组成的Python .py文件,任何Python文件都可以被称为模块。一个名为 hello.py的Python文件具有模块名称 hello,可以导入其他Python文件或在Python命令行解释器上使用。

模块可以 定义函数, 变量您可以在其他 Python .py 文件中或通过 Python 命令行解释器引用。

在Python中,模块通过使用导入语句访问,当你这样做时,你会执行模块的代码,保持定义的范围,以便你的当前文件(文件)可以利用它们。

例如,当Python导入一个名为hello的模块时,翻译器首先会搜索一个名为hello的内置模块,如果没有找到一个内置模块,Python翻译器会在从sys.path变量中接收的目录列表中搜索一个名为hello.py的文件。

本教程将指导您检查和安装模块,导入模块和代号模块。

前提条件

如果您没有设置编程环境,您可以参考本地编程环境的安装和安装指南(https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-python-3)或适用于您的操作系统(Ubuntu, CentOS, Debian 等)的编程环境(https://www.digitalocean.com/community/tutorial_collections/how-to-install-python-3-and-set-up-a-programming-environment)。

检查和安装模块

有许多模块被嵌入到 **Python 标准库**中,其中包含许多提供系统功能或提供标准化解决方案的模块。

<$>[info] 信息: 要跟进本教程中的示例代码,请在本地系统上运行python3命令,打开Python交互壳。

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

1python

从翻译器内部,您可以运行导入声明,以确保给定的模块已经准备好调用,如下:

1import math

由于数学是一个内置的模块,你的解释员应该完成任务,没有反馈,返回提示,这意味着你不需要做任何事情来开始使用数学模块。

让我们用您可能还没有安装的模块运行导入语句,例如2D绘图库matplotlib:

1import matplotlib

如果「matplotlib」未安裝,您會收到這樣的錯誤:

1[secondary_label Output]
2ImportError: No module named 'matplotlib'

您可以用CTRL + D禁用Python解释器,然后用pip安装matplotlib

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

1pip install matplotlib

一旦安装,您可以在Python解读器中使用导入matplotlib导入matplotlib,并且它将没有错误完成。

进口模块

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

一个导入声明由导入关键字和模块名称组成。

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

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

1[label my_rand_int.py]
2import random

当我们导入一个模块时,我们在当前的程序中将其作为一个单独的名称空间提供给我们,这意味着我们将不得不参考点符号中的函数,例如在 `[模块]。

在实践中,用随机模块的例子,这可能看起来像一个函数,如:

  • random.randint() 呼叫函数返回随机整数,或
  • random.randrange() 呼叫函数返回指定的范围中的随机元素。

让我们创建一个 for loop来显示我们如何在我们的my_rand_int.py程序中调用随机模块的函数:

1[label my_rand_int.py]
2import random
3
4for i in range(10):
5    print(random.randint(1, 25))

这个小程序首先在第一行导入随机模块,然后进入一个循环,它将与10个元素一起工作。在循环中,该程序将打印在1到25(包括)范围内的随机整数。

当我们使用python my_rand_int.py运行该程序时,我们将收到10个随机整数作为输出,因为这些是随机的,所以每次运行该程序,你可能会得到不同的整数,但它们会产生这样的东西:

 1[secondary_label Output]
 26
 39
 41
 514
 63
 722
 810
 91
1015
119

整数永远不能低于1或超过25。

如果您想使用来自多个模块的函数,您可以通过添加多个导入语句来做到这一点:

1[label my_rand_int.py]
2import random
3import math

您可能会看到导入多个模块的程序,这些模块分开它们 - 如在导入随机,数学中 - 但这与 PEP 8 风格指南不一致。

为了利用我们的附加模块,我们可以将数学的常数pi添加到我们的程序中,并减少打印的随机整数的数量:

1[label my_rand_int.py]
2import random
3import math
4
5for i in range(5):
6    print(random.randint(1, 25))
7
8print(math.pi)

现在,当我们运行我们的程序时,我们将收到这样的输出,我们最后的输出线是pi:

1[secondary_label Output]
218
310
47
513
610
73.141592653589793

导入语句允许您将一个或多个模块导入您的Python程序,允许您使用这些模块中构建的定义。

使用进口

要引用程序名称空间中的模块中的项目,您可以使用...导入语句。

在此构建中,您可以指定哪些定义要直接参考。

在其他程序中,您可能会看到导入声明通过使用恒星(*)作为野卡来引用模块内所定义的一切,但这被 PEP 8阻止了。

让我们首先从随机模块中导入一个特定的函数randint():

1[label my_rand_int.py]
2from random import randint

在这里,我们首先调用的关键字,然后调用随机的模块,然后我们使用导入的关键字,然后调用我们想要使用的特定函数。

现在,当我们在我们的程序中实现这个函数时,我们将不再将函数写入点符号为random.randint(),而是只写入randint():

1[label my_rand_int.py]
2from random import randint
3
4for i in range(10):
5    print(randint(1, 25))

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

使用...导入结构,我们可以在我们的程序名称空间中引用一个模块的定义元素,从而避免点符号。

模块化

在Python中,可以通过使用as关键字来修改模块名称及其功能。

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

这个声明的构造看起来如下:

1import [module] as [another_name]

让我们在我们的my_math.py程序文件中修改数学模块的名称。我们将更改数学模块的名称为m,以便缩写它。

1[label my_math.py]
2import math as m
3
4print(m.pi)
5print(m.e)

在程序中,我们现在将pi常数称为m.pi而不是math.pi

对于某些模块来说,通常会使用名称。 ‘matplotlib.pyplot’模块的官方文档要求使用‘plt’作为名称:

1import matplotlib.pyplot as plt

这允许程序员将更短的单词plt附加到模块内可用的任何函数中,例如在plt.show()中。

结论

当我们导入模块时,我们可以调用非Python内置的函数,有些模块被安装为Python的一部分,有些我们会通过pip来安装。

使用模块使我们能够使我们的程序更加强大和强大,因为我们正在利用现有代码,我们也可以为自己和其他程序员在未来的程序中使用自己的模块(https://andsky.com/tech/tutorials/how-to-write-modules-in-python-3)。

Published At
Categories with 技术
comments powered by Disqus