19. 包

一、什么是包

在 Python 中,包(Package)也是一个模块。当我们模块中代码过多时,或者一个模块需要被分解为多个模块时,这时就需要使用包。普通的模块就是一个 py 文件,而包一个分级层次的目录结构,它将一组功能相近的模块组织在一个目录下。这样,既可以起到代码规范的作用,又能避免模块名重名引入的冲突。在包中,必须要有一个 __init__.py 这个文件,这个文件中可以包含中的主要内容。

使用 import 语句首次导入包时,会产生一个名称空间。然后会运行该包下的 __init__.py 文件,将运行过程中生成的名字都会丢到这个名称空间中。然后会在当前执行文件的名称空间拿到一个名字,该名字指向被导入的包的名称空间。

在 Python 3 中可以没有 __init__.py 文件;

二、创建包

创建一个 【arith】 文件夹,并在该文件夹下创建一个 __init__.py 文件。

python 复制代码
num1 = 30
num2 = 40

def add():
    print("我是arith包下__init__模块中的add()方法")

在 【arith】 目录下,创建 【extension】 文件夹,并在该文件夹下创建一个 __init__.py 文件。

python 复制代码
num3 = 30
num4 = 40

def factorial():
    print("我是arith包下extension模块中的factorial()方法")

三、包的使用

我们可以通过 "import 完整包名.模块名" 的方式加载指定模块。

python 复制代码
import arith
arith.add()
python 复制代码
import arith.extension
arith.extension.factorial()

我们还可以通过 "from 完整包名 import 模块名" 的方式加载指定的模块。

python 复制代码
from arith import extension
extension.factorial()

我们还可以通过 "from 完整包名.模块名 import 变量 " 的方式加载指定模块中的指定结构。

python 复制代码
from arith import add
add()
python 复制代码
from arith.extension import factorial
factorial()

__pycache__ 目录下的文件模块的缓存文件。Python 代码在执行前,需要被解析器先转换为机器码,然后再执行。所以我们在使用模块(包)时,也需要将模块中的代码先转换为机器码然后再交由计算机执行。而为了提高程序的运行的性能,Python 会在编译一次以后,将代码保存到一个缓存文件中。这样在下次加载这个模块(包)时,就可以不再重新编译而是直接加载缓存中编译好的代码即可。

相关推荐
王中阳Go11 分钟前
Python 的 PyPy 能追上 Go 的性能吗?
后端·python·go
Goboy20 分钟前
控制仙术流程 - 抉择与循环的艺术
后端·python
麦麦大数据32 分钟前
F024 vue+flask电影知识图谱推荐系统vue+neo4j +python实现
vue.js·python·flask·知识图谱·推荐算法·电影推荐
AI小云37 分钟前
【Python与AI基础】Python编程基础:读写CSV文件
人工智能·python
Goboy1 小时前
Python修仙入门 - 踏入仙门的第一步
后端·python
程序员爱钓鱼1 小时前
Python编程实战 · 基础入门篇 | 什么是Python
后端·python
程序猿小D1 小时前
【完整源码+数据集+部署教程】遥感图像道路检测分割系统源码和数据集:改进yolo11-CARAFE
python·yolo·计算机视觉·目标跟踪·数据集·yolo11·遥感图像道路检测分割系统
zy_destiny2 小时前
【工业场景】用YOLOv8实现人员打电话识别
人工智能·python·深度学习·yolo·机器学习·计算机视觉·目标跟踪
FreeBuf_2 小时前
Happy DOM曝CVSS 9.4严重RCE漏洞,PoC已公开(CVE-2025-61927)
java·c语言·c++·python·php
C嘎嘎嵌入式开发2 小时前
(10)100天python从入门到拿捏《Python中的数据结构与自定义数据结构》
数据结构·python·算法