介绍
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)。