python包和模块的内容整理

其中一个部分是, 模块属于含代码的文件, 另一个部分是, 包为含多款模块的目录, 还能借助.py予以识别;采取的方式是使用导入模块, 另外还有从...导入函数;在包里面能够采用相对或者绝对导入, 并且建议运用绝对导入以及精心进行命名, 从而去提升项目结构清楚程度以及可维护性能。

在程序里, 包()以及模块()属于组织相关代码的基本方式, 要是能够合理去运用, 即可让项目的结构变得清晰, 并且易于维护。对于编写规范的程序而言, 理解它们的定义、用法以及区别是非常重要的。

什么是模块()

包含代码的文件被称作模块, 其结尾通常是 .py , 它能够定义函数、类、变量, 还能够包含可执行代码, 在导入模块之后, 其中的内容便可以被使用。

例如,创建一个名为 .py 的文件:

brush:php;toolbar:false; 复制代码
# math_utils.py
def add(a, b):
    return a + b

def multiply(a, b): return a * b

在另一个脚本中导入并使用:

brush:php;toolbar:false; 复制代码
import math_utils

print(math_utils.add(2, 3)) # 输出 5 from math_utils import multiply print(multiply(2, 4)) # 输出 8

什么是包()

包, 那个被称做包含多个模块的目录, 它是专门用来组织相关功能代码的。而要使得一个目录能够被精准识别为包, 那就必然得在这个特定的目录下面包含一个有着特定名称的被称做 .py 的文件, 这个文件, 它既可以是空空如也的状态, 当然, 也能够包含初始化代码。

例如,项目结构如下:

brush:php;toolbar:false; 复制代码
myproject/
│
└── utils/
    ├── __init__.py
    ├── math_utils.py
    └── string_utils.py

其中 utils 是一个包,可以通过以下方式导入:

venv 3.14.2

采用3.14.2的64位官方安装包来使用venv, 在进行这么一番使用此安装包操作之后, 就能够借助标准库venv用以创建虚拟环境了。

下载

brush:php;toolbar:false; 复制代码
from utils.math_utils import add
from utils import string_utils

以.py 来用于定义包的公开接口, 像是进行设置, 或者提前将常用模块导入:

brush:php;toolbar:false; 复制代码
# utils/__init__.py
from .math_utils import add, multiply
from .string_utils import to_upper

all = 'add', 'multiply', 'to_upper'

相对导入与绝对导入

在包的内部范围里, 模块之间能够相互进行导入操作。在运用相对导入这种方式时, 借助点这个符号来表示层级之间的关系。

例如,在 .py 中想使用 .py 的函数:

brush:php;toolbar:false; 复制代码
# string_utils.py
from .math_utils import add

def process(): return add(1, 2)

留意, 相对导入仅仅能够于包之中运用, 不可以直接去运行涵盖相对导入的模块文件, 否则就会出现报错。

常见操作建议

大致就是这些, 把控模块以及包的运用情形, 便能够切实有效地构建项目架构格局, 进而全方位提高代码的可复用程度以及可阅读层次。

相关推荐
二进制漫游记1 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
-今昭-2 小时前
《V2V 迁移实战:将 VMware 虚拟机转为 OpenStack 可用 Glance qcow2 镜像》
开发语言·python
2601_962381582 小时前
【转】Python渗透测试工具:sqlmap
python·渗透测试·sql注入·sqlmap·数据库安全
用户3721574261353 小时前
如何使用 Python 从 Word 文档中提取图片
python
白山编程大哥4 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
昭昭日月明6 小时前
RAGFlow 入门,不用从零造轮子
python·ai编程
莓有烦恼吖6 小时前
Vibe Coding 的一些思考
python
小白学大数据6 小时前
超简单:用 Python 让 Excel 飞起来:用 openpyxl 把重复报表整理交给脚本
开发语言·数据库·python·excel
爱丶不疚7 小时前
写给前端工程师的现代 Python 工程化最佳实践:从 pnpm 到 uv,从 CommonJS 到 src-layout
javascript·python·typescript