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