Python
Java前端运维数据库
Python
Python
  • 安装
  • 基础语法
  • 数据类型
    • 列表
    • 元组
    • 集合
    • 字典
  • 数据类型转换
  • 函数
  • 条件判断和循环
  • 模块
  • 多线程
  • 错误和异常
  • 装饰器
  • pip & pipx
Powered by GitBook
On this page
  • 模块(module)
  • 导入模块
  • 模块的搜索路径
  • 加速模块加载
  • 包(Packages)
  • 导入包和模块
  • init.py的作用

模块

模块(module)

模块就是一个 Python 文件,内部可以包含变量、函数、类等。通过模块,我们可以将代码组成成可重用的单元,便于管理和维护。

模块的作用:

  • 代码复用:将常用的功能封装到模块中,可以在多个程序之间重复使用。

  • 命名空间管理:模块可以有效的避免命名冲突,不同模块中的命名函数和便利不会相互干扰。

导入模块

# 导入整个模块
import math_utils
math_utils.add(1, 2)

# 只导入指定内容
from math_utils import add, sum
add(1, 2)
sum(1, 2)

# 使用别名
import math_utils as mu
mu.add(1, 2)

import math_utils add as sum;
sum(1, 2)

# 把一个模块中的所有内容全部导入
from math_utils import *

一个模块只会被导入一次,不管执行来多少次 import 语句。

模块的搜索路径

当导入一个模块时,Python 会按照 sys.path 中的路径顺序去查找模块,包括:

  • 当前目录

  • 环境变量 PYTHONPATH 中的目录

  • 安装目录中的标准库。

你可以通过如下方式查看搜索路径。

import sys
print(sys.path)

加速模块加载

Python 会根据编译版本检查源代码的修改日期,以查看它是否已过期并需要重新编译。

包(Packages)

包是一个包含多个模块的目录,该目录下必须包含一个__init__.py文件(Python3.3 起可以省略,建议保留以便兼容)

my_package/
├── __init__.py
├── module1.py
└── sub_package/
    ├── __init__.py
    └── module2.py

导入包和模块

# 导入包下的模块
form my_package import module1;

# 导入子包下的模块
from my_package.sub_package import module2;

init.py的作用

  • 把目录当作包使用

  • 可以在其中定义包级别的变量或者导出模块。

  • 可以用__all__控制from package import *的导入项。

# my_package/__init__.py
__all__=[1module1"]  # 只导出 module1
Previous条件判断和循环Next多线程

Last updated 1 day ago

为了加速模块的加载速度,Python 会将每个模块的编译版本(如*.pyc)缓存在__pycache__目录中。生成编译文件 pyc 的详细过程,可以参考文档。

PEP 3147