Python模块

2023-09-17 22:16:32

任何扩展名为.py包含 Python 代码的文本文件基本上都是一个模块。通过使用 import 语句,可以在一个模块中定义的不同 Python 对象(如函数、类、变量、常量等)可用于解释器会话或另一个 Python 脚本。 内置模块中定义的函数在使用前需要导入。在类似的行中,自定义模块中可能包含一个或多个用户定义的 Python 对象。这些对象可以在解释器会话或其他脚本中导入。

如果编程算法需要定义大量函数和类,则它们在逻辑上组织在模块中。一个模块存储类、函数和其他类似相关的资源。这种模块化的代码结构使其易于理解、使用和维护。

创建模块(Creating a Module)

下面显示的是一个包含sum()函数定义的 Python 脚本。它被保存为calc.py

def sum(x, y):
    return x + y

导入模块(Importing a Module)

我们现在可以导入这个模块并在Python shell中执行sum()函数。

import calc 
n = calc.sum(5, 5) 
print(n)  #10

同样,要在另一个 Python 脚本中使用上述calc模块,请使用 import 语句。

每个模块,无论是内置的还是定制的,都是模块类的对象。 使用内置type()函数验证不同模块的类型,如下所示。

import calc
print(type(calc))  # <class 'module'>
import math
print(type(math))  #<class 'module'>

重命名导入的模块(Renaming the Imported Module)

使用 as 关键字重命名导入的模块,如下所示。

import math as cal
n = cal.log(4) 
print(n) #1.3862943611198906

从 .. 导入声明(from .. import statement)

上面的 import 语句将加载当前工作环境(也称为命名空间)中模块的所有资源。 可以使用此语法从模块导入特定对象。例如,以下模块calc.py包含三个函数。

def sum(x,y):
    return x + y
def average(x, y):
    return (x + y)/2
def power(x, y):
    return x**y

现在,我们可以使用 from...导入语句。例如,以下代码仅导入main.py中的两个函数。

from calc import sum, average
n = sum(10, 20) #30
avg = average(10, 20) #15
p = power(2, 4)  #error

下面的示例仅导入一个函数 - sum。

from calc import sum
n = sum(10, 20) #30

您还可以使用 from...import * 语法导入其所有函数。

from calc import *
n = sum(10, 20)
print(n)
avg = average(10, 20)
print(avg)
p = power(2, 4)
print(p)

模块搜索路径(Module Search Path)

在交互式会话或脚本中遇到导入语句时:

  • 首先,Python 解释器尝试在当前工作目录中找到模块。
  • 如果未找到,则搜索 PYTHONPATH 环境变量中的目录。
  • 如果仍未找到,它将搜索安装默认目录。

当 Python 解释器启动时,它将上述所有位置放在 sys.path 属性返回的列表中。

import sys
sys.path
['','C:python36Libidlelib', 'C:python36python36.zip', 
'C:python36DLLs', 'C:python36lib', 'C:python36', 
'C:UsersacerAppDataRoamingPythonPython36site-packages', 
'C:python36libsite-packages']

如果上述任何目录中都不存在所需的模块,则会抛出消息ModuleNotFoundError

import MyModule
Traceback (most recent call last): 
File "<stdin>", line 1, in <module>
    ModuleNotFoundError: No module named 'MyModule'

重新加载模块(Reloading a Module)

假设您已经导入了一个模块并使用它。但是,模块的所有者在您导入模块后添加或修改了某些功能。因此,您可以使用imp模块的reload()功能重新加载模块以获取最新模块,如下所示。

import imp
imp.reload(calc)

获取有关模块的帮助(Getting Help on Modules)

使用 help() 函数了解模块的方法和属性。例如,调用help("math")以了解数学模块。 如果您已经导入了模块,请提供其名称,例如 help(math) .

获取模块帮助

如上所示,您可以看到方法名称和说明。它不会显示以 --More 结尾的帮助页面--.按 Enter 查看更多帮助。

您还可以使用 dir() 函数来了解模块的名称和属性。

知道模块属性和方法

在下一章中了解模块属性。

本文内容总结: