如何在Python 3中导入模块

本教程将引导您完成安装模块,导入模块和别名模块。模块是Python .py文件,由Python代码组成。他们可以创建函数定义和语句,您可以在其他Python .py文件或通过Python命令行解释器引用。在Python中,通过使用import语句来访问模块,这将告诉当前程序引入其他相关文件的定义和语句以供自己使用。

介绍

Python编程语言自带了各种内置函数 。其中包括几个常见功能,包括:
  • print()打印表达式
  • abs()返回数字的绝对值
  • int()将另一种数据类型转换为整数
  • len()返回序列或集合的长度
然而,这些内置函数是有限的,我们可以利用模块来制作更复杂的程序。 模块是Python .py文件,由Python代码组成。 任何Python文件都可以作为模块引用。 一个名为hello.py的Python文件的模块名称为hello ,可以导入其他Python文件或在Python命令行解释器上使用。 模块可以定义可以在其他Python .py文件或通过Python命令行解释器引用的函数,类和变量。 在Python中,使用import语句访问模块。当你这样做,你执行模块的代码,保持定义的范围,以便您的当前文件可以使用这些。 当Python导入一个名为hello的模块时,解释器将首先搜索一个名为hello的内置模块。 如果没有找到内置模块,Python解释器将在从sys.path变量接收的目录列表中搜索一个名为hello.py的文件。 本教程将引导您检查和安装模块,导入模块和别名模块。

检查和安装模块

Python标准库中内置了许多模块,其中包含许多模块,可提供对系统功能的访问或提供标准化解决方案。 Python标准库是每个Python安装的一部分。 要检查这些Python模块是否准备就绪,请进入本地Python 3编程环境基于服务器的编程环境 ,然后在命令行中启动Python解释器,如下所示:
python
在解释器中,您可以运行import语句以确保给定模块已准备好被调用,如:
import math
因为math是一个内置的模块,你的解释器应该完成任务没有反馈,返回到提示符。 这意味着你不需要做任何事情开始使用math模块。 让我们运行带有可能没有安装的模块的import语句,如2D绘图库matplotlib
import matplotlib
如果没有安装matplotlib,你会收到这样的错误:
ImportError: No module named 'matplotlib'
您可以使用CTRL + D停用Python解释器,然后使用pip安装matplotlib 。 接下来,我们可以使用pip来安装matplotlib模块:
pip install matplotlib
安装后,您可以使用import matplotlib在Python解释器中import matplotlib ,它将import matplotlib完成。

导入模块

要使用模块中的函数,您需要使用import语句导入模块。 import语句由import关键字和模块的名称组成。 在Python文件中,这将在代码的顶部,任何shebang行或一般注释下声明。 因此,在Python程序文件my_rand_int.py我们将以这种方式导入random模块以生成随机数:
my_rand_int.py
import random
当我们导入一个模块时,我们将它作为一个单独的命名空间提供给我们当前的程序。这意味着我们将必须引用点表示法的函数,如[module].[function] 。 在实践中,使用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个元素的for循环。 在循环中,程序将打印1到25(含)范围内的随机整数。 整数125被传递给random.randint()作为其参数。 当我们使用python my_rand_int.py运行程序时,我们将接收10个随机整数作为输出。因为这些是随机的,你可能会得到不同的整数,每次你运行程序,但他们会看起来像这样:
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 Style Guide不一致。 为了使用我们的附加模块,我们可以将math中的常数pi加到程序中,并减少打印的随机整数的数量:
my_rand_int.py
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()
my_rand_int.py
from random import randint
这里,我们首先调用from关键字,然后为模块random 。 接下来,我们使用import关键字并调用我们想要使用的特定函数。 现在,当我们在程序中实现这个函数时,我们不再将函数以点表示法random.randint() ,而只是写入randint()
my_rand_int.py
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 ,以便将其缩写。我们修改的程序将如下所示:
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()任何函数,如plt.show() 。 您可以在我们的“ 如何在Python中绘制数据3使用matplotlib教程 ”中看到这个别名import语句。

结论

当我们导入模块时,我们能够调用不是Python内置的函数。一些模块作为Python的一部分安装,一些我们将通过pip安装。 利用模块使我们能够使我们的程序更加健壮和强大,因为我们利用现有的代码。我们还可以为自己创建自己的模块,并让其他程序员在未来的程序中使用。