Skip to content

模块

在 Python 的世界里,模块就像是一本本工具书,每个模块都包含了特定领域的功能函数、类和变量。合理使用模块可以提高代码的可复用性,减少重复造轮子,让你的 Python 代码更加简洁优雅。

模块的本质

  • 模块本质上就是一个包含 Python 代码的 .py 文件。
  • 这个文件可以定义函数、类、变量,以及可执行的代码。
  • 模块就像一个工具箱,把实现特定功能的代码组织在一起。

模块的优点

  • 代码重用: 避免重复编写代码,提高效率。
  • 代码组织: 将代码按照功能划分,提高可读性和可维护性。
  • 命名空间: 避免不同模块中相同名称的函数、类、变量发生冲突。

模块的类型

  • 内置模块: Python 自带的模块,例如 os, sys, math, random 等。
  • 第三方模块: 由其他开发者创建的模块,需要先安装才能使用。例如 requests, numpy, pandas 等。
  • 自定义模块: 自己创建的模块,用于组织自己的代码。

模块的创建

创建一个 .py 文件,例如 moudule.py ,在文件中定义函数、类、变量等。

python
# mymodule.py 文件
def greet(name):
    print(f"Hello, {name}!")

# main.py 文件
import mymodule

mymodule.greet("Alice")  # 调用自定义模块中的函数

模块的使用

导入模块

使用 import 关键字导入。

python
import math # 导入 math 模块
import random as rnd  # 导入 random 模块并起别名为 rnd
from os import path # 从 os 模块导入 path 属性

导入模块成员

使用 . 访问模块中的函数、类、变量。

python
import math # 导入 math 模块
import random as rnd  # 导入 random 模块并起别名为 rnd
from os import path # 从 os 模块导入 path 属性

__name__ 变量

  • 每个模块都有一个内置变量 __name__ 变量。
  • 当直接运行模块文件时,该变量的值为 __main__
  • 当模块被导入时,该变量的值为模块名。
python
# mymodule.py 文件
def greet(name):
    print(f"Hello, {name}!")

if __name__ == "__main__":
    greet("Bob")  # 只有当直接运行 mymodule.py 时才会执行

# main.py 文件,单纯导入不会执行 mymodule.py 中的 greet("Bob") 
import mymodule 

print(mymodule.__name__)  # 输出:mymodule

模块搜索路径

当你使用 import 语句导入模块时,Python 解释器会按照一定的顺序查找模块文件,这个顺序被称为 模块搜索路径。假设你想导入一个名为 mymodule 的模块。

  • Python 解释器首先会查找 当前目录 下是否存在名为 mymodule.py 的文件。例如,如果你正在运行的 Python 文件是 /home/user/project/main.py,Python 会首先在 /home/user/project/ 目录下查找 mymodule.py
  • 如果在当前目录下没有找到 mymodule.py,Python 就会查找 PYTHONPATH 环境变量** 中指定的目录。例如,如果你的 PYTHONPATH 设置为 /usr/local/lib/python3.8/site-packages:/home/user/my_modules,Python 会依次在 /usr/local/lib/python3.8/site-packages/home/user/my_modules 目录下查找 mymodule.py
  • 如果在 PYTHONPATH 中也没有找到,Python 会继续在 Python 安装目录 下的 lib/site-packages 目录中查找。这个目录包含了 Python 自带的模块以及你使用 pip install 命令安装的第三方模块。

常用模块

  • os: 操作系统接口,例如文件操作、进程管理、环境变量等。
  • sys: Python 解释器信息,例如 Python 路径、命令行参数等。
  • math: 数学函数,例如三角函数、对数函数等。
  • random: 随机数生成。
  • datetime: 日期时间处理。
  • requests: HTTP 请求库。
  • numpy: 科学计算库,提供数组和矩阵运算。
  • pandas: 数据分析库,提供 DataFrame 数据结构。

总结

Python 模块是组织代码、提高代码复用性和可维护性的重要工具。掌握模块的使用方法,可以让你编写出更加简洁、高效、易于维护的 Python 代码。

Released under the MIT License.