Python 中的模块是什么?

模块是指包含 Python 语句和定义的文件。
包含 Python 代码的文件,例如:example.py,称为模块,其模块名称为example.
我们使用模块将大型程序分解为可管理和有组织的小文件。此外,模块提供了代码的可重用性。
我们可以在一个模块中定义我们最常用的函数并导入它,而不是将它们的定义复制到不同的程序中。
让我们创建一个模块。键入以下内容并将其另存为example.py.
# Python Module example def add(a, b): “””This program adds two numbers and return the result””” result = a + b return result
在这里,我们在名为 的模块中定义了一个函数 。该函数接受两个数字并返回它们的总和。add()example


如何在 Python 中导入模块?

我们可以将模块内的定义导入到另一个模块或 Python 中的交互式解释器。
我们使用import关键字来做到这一点。要导入我们之前定义的模块example,我们在 Python 提示符中键入以下内容。
>>> import example
这不会example直接在当前符号表中导入定义的函数的名称。它只在example那里导入模块名称。
使用模块名称,我们可以使用点.运算符访问该函数。例如:
>>> example.add(4,5.5) 9.5
Python 有大量的标准模块。您可以查看Python 标准模块及其用例的完整列表。这些文件位于 Python 安装位置内的 Lib 目录中。
可以像导入用户定义的模块一样导入标准模块。
有多种方法可以导入模块。它们列在下面..


Python 导入语句

我们可以使用该import语句导入一个模块,并使用上述的点运算符访问其中的定义。这是一个例子。

import statement example # to import standard module math import math print(“The value of pi is”, math.pi)
当你运行程序时,输出将是:
pi 的值为 3.141592653589793


重命名导入

我们可以通过如下重命名来导入模块:

import module by renaming it import math as m print(“The value of pi is”, m.pi)
我们已将math模块重命名为m. 在某些情况下,这可以节省我们的打字时间。
请注意,math在我们的范围内无法识别该名称。因此,math.pi是无效的,m.pi是正确的实现。


Python from…import 语句

我们可以从模块导入特定名称,而无需将模块作为一个整体导入。这是一个例子。

import only pi from math module from math import pi print(“The value of pi is”, pi)
在这里,我们只pi从math模块导入了属性。
在这种情况下,我们不使用点运算符。我们还可以导入多个属性,如下所示:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045


导入所有名称

我们可以使用以下构造从模块中导入所有名称(定义):

import all names from the standard module math from math import print(“The value of pi is”, pi)
在这里,我们从 math 模块导入了所有定义。这包括我们范围内可见的所有名称,但以下划线开头的名称(私有定义)除外。
使用星号 (
) 符号导入所有内容并不是一个好的编程习惯。这可能导致标识符的重复定义。它还妨碍了我们代码的可读性。


Python 模块搜索路径

在导入模块时,Python 会查看多个位置。解释器首先寻找内置模块。然后(如果未找到内置模块),Python 会查看sys.path. 搜索是按此顺序进行的。

  • 当前目录。
  • PYTHONPATH (带有目录列表的环境变量)。
  • 依赖于安装的默认目录。

导入系统 >>> sys.path [‘’, ‘C:\Python33\Lib\idlelib’, ‘C:\Windows\system32\python33.zip’, ‘C:\Python33\DLLs’, ‘C:\Python33\lib’, ‘C:\Python33’, ‘C:\Python33\lib\site-packages’]
我们可以添加和修改这个列表来添加我们自己的路径。


重新加载模块

Python 解释器在会话期间只导入一次模块。这使事情更有效率。这里有一个例子来说明这是如何工作的。
假设我们在名为 的模块中有以下代码my_module。
# This module shows the effect of # multiple imports and reload print(“This code got executed”)
现在我们看到了多次导入的效果。
>>> import my_module This code got executed >>> import my_module >>> import my_module
我们可以看到我们的代码只执行了一次。这意味着我们的模块只导入了一次。
现在,如果我们的模块在程序运行过程中发生了变化,我们将不得不重新加载它。一种方法是重新启动解释器。但这并没有多大帮助。
Python 提供了一种更有效的方法。我们可以使用模块reload()内部的函数imp来重新加载模块。我们可以通过以下方式做到:
>>> import imp >>> import my_module This code got executed >>> import my_module >>> imp.reload(my_module) This code got executed


dir() 内置函数

我们可以使用该dir()函数找出模块内定义的名称。
例如,我们add()在开始时的模块example中定义了一个函数。
我们可以通过以下方式dir在example模块中使用:
>>> dir(example) [‘builtins‘, ‘cached‘, ‘doc‘, ‘file‘, ‘initializing‘, ‘loader‘, ‘name‘, ‘package‘, ‘add’]
在这里,我们可以看到一个排序的名称列表(以及add)。所有其他以下划线开头的名称都是与模块关联的默认 Python 属性(不是用户定义的)。
例如,该name属性包含模块的名称。
>>> import example >>> example.name ‘example’
可以使用dir()不带任何参数的函数找到我们当前命名空间中定义的所有名称。
>>> a = 1 >>> b = “hello” >>> import math >>> dir() [‘builtins‘, ‘doc‘, ‘name‘, ‘a’, ‘b’, ‘math’, ‘pyscripter’]